문제

나는 다음과 같은 코드를 나 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,소망,사람을 설명할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top