IT story

Razor actionlink 자동 생성? length = 7 in URL?

hot-time 2021. 1. 7. 20:01
반응형

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

반응형