ASP.net MVC 사이트입니다.마스터 링크를 사용하여 HTML.ActionLink
-
20-08-2019 - |
문제
나는 다음과 같은 코드를 나 site.master
대 메뉴
<ul id="menu">
<li><%= Html.ActionLink("My Contact Info", "DetailsbyUserName/" + Html.Encode(Page.User.Identity.Name), "Users")%></li>
</ul>
때 나는 가리키는 URL 을 내가 보는 포인트:
http://site/Users/DetailbyUserName/[name]
는 올바른 것입니다.
문제는 내가 중단점 Users
컨트롤러 클래스:
public ActionResult DetailsbyUserName(string loginName)
{
UserInfo user = repo.GetUserByName(loginName);
return View(user);
}
그것은 보인다 loginName
은 항상 매개 변수 null
.
어떤 방법이 있나요?
해결책
문제는 "loginname"이라는 매개 변수를 지정하기위한 경로가 설정되어 있지 않다는 것입니다.
기본 경로가 귀하의 요청을 삼키고 "ID"라는 매개 변수에 [이름] 값을 할당하려고합니다. "loginname"에서 매개 변수의 이름을 "ID"로 변경하면 효과가있을 것입니다.
라우팅 엔진은 각 URL 세그먼트를 이름 지정된 매개 변수에 맵핑합니다. 기본 경로는 다음과 같습니다. "{controller}/{action}/{id}"
. "loginname"이라는 매개 변수를 원한다면 세그먼트가있는 경로를 생각해 내야합니다. "{controller}/{action}/{loginName}"
, 기본 경로와 다르기 때문에 기본 경로가 먼저 일치하지 않도록했습니다.
다른 팁
try:
Html.ActionLink("My Contact Info", "DetailsbyUserName", "Users", new { loginName = Html.Encode(Page.User.Identity.Name), null);
컨트롤러 무언가가 다음과 같다:
public ActionResult DetailsbyUserName(string veryVeryLongParameterName);
나는 당신을 사용하여 새로운{veryVeryLongParameterName="YourParamValue"}에 ActionLink 의 routeValues 매개 변수입니다.
또한,당신은 필요한 경로에 대한.
나는 아주 새로운 것이 너무 적어도 그게 내가 이해에 대해 ActionLinks,소망,사람을 설명할 수 있습니다.
제휴하지 않습니다 StackOverflow