Razor actionlink 자동 생성? length = 7 in URL?
면도기 페이지에 아래 링크가 있습니다.
@Html.ActionLink("Create New Profile", "Create", "Profile", new { @class="toplink" })
아래와 같이보기 페이지의 소스에 나타납니다.
<a href="/admin/profile/create?length=7" class="toplink">Create New Profile</a>
링크를 클릭하면 URL은 다음과 같습니다.
http://localhost:54876/admin/profile/create?length=7
나는 원하지 않는다 ?length=7
. 이 자동 생성 이유는 무엇입니까?
ActionLink
재정의 당신은에 일치 사용 (문자열 링크 텍스트 문자열 actionName, 개체 routeValues 개체 htmlAttributes) 재정의합니다. 따라서 "Profile"값이 routeValues
매개 변수 에 전달됩니다 . 이 매개 변수와 관련하여이 함수의 동작은 모든 공용 속성을 가져 와서 링크를 생성하는 데 사용되는 경로 값 목록에 추가하는 것입니다. String에는 하나의 공용 속성 (Length) 만 있으므로 "length = 7"이됩니다.
사용하려는 올바른 오버로드는 (string linkText, string actionName, string controllerName, Object routeValues, Object htmlAttributes) 이며 다음과 같이 loke라고 부릅니다.
@Html.ActionLink("Create New Profile", "Create", "Profile", new {}, new { @class="toplink"})
정확한 원인은 모르겠지만 다음과 같이 변경합니다.
@Html.ActionLink("Create New Profile", "Create", "Profile", new {}, new { @class="toplink" })
마지막 매개 변수 ( htmlattributes
추가 된 매개 변수)를 생략 할 때 어떤 오버로드 MVC가 선택하는지 모르겠지만 , 수정 될 것입니다. 언젠가는 정확히 무슨 일이 일어나고 있는지 조사하고 알아낼 것입니다.
주의해야 할 또 다른 사항은에서 컨트롤러를 정의하고 @ActionLink
있으므로 수행 할 필요가 없을 수 있습니다. 예를 들어 "Create New Profile" @ActionLink
이 표시되는 뷰는 "/admin/profile/index.cshtml"일 수 있습니다. 목록이 경우, 프로파일을 기존의 것을 볼 수, 당신은에서 컨트롤러를 정의 할 필요가 없습니다 @ActionLink
(가)로 @ActionLink
이미 상대적입니다 ProfileController
당신이 있도록, @ActionLink
수
@Html.ActionLink("Create New Profile", "Create", null, new { @class="toplink" })
표시된 답변 null
대신 사용 했지만 new{}
이것이 더 적절하다고 생각합니다. ActionLink 오버로드는 지금까지 가장 간단한 것이 아닙니다.
참조 URL : https://stackoverflow.com/questions/4357856/razor-actionlink-autogenerating-length-7-in-url
'IT story' 카테고리의 다른 글
web.xml에서 HttpSession을 끌 수 있습니까? (0) | 2021.01.07 |
---|---|
Asp.net MVC 페이지가 이미지 파일에 대한 Mime 유형 경고를 제공합니다. (0) | 2021.01.07 |
정규식, 여러 줄을 일치시키는 방법? (0) | 2021.01.07 |
열거 형에 패키지 전용 생성자가있는 이유는 무엇입니까? (0) | 2021.01.07 |
프록시 함수를 통해 console.log에 첫 번째 클래스 인수로 인수 전달 (0) | 2021.01.07 |