ActionLink의 ID를 컨트롤러에 전달하는 ASP.NET MVC


98

컨트롤러의 html.ActionLink에서 보내는 ID를 검색 할 수 없습니다. 여기에 제가하려는 작업이 있습니다.

<li>
    <%= Html.ActionLink("Modify Villa", "Modify", "Villa", new { @id = "1" })%></li>


    public ActionResult Modify(string ID)
    {

        ViewData["Title"] =ID;
        return View();
    }

이것이 내가 따라 간 튜토리얼에서 권장하는 내용이지만 작동하지 않으며 URL 끝에? Length = 5를 추가합니다!

미리 감사드립니다!

편집 : 여기에 내가 사용하고있는 경로가 기본입니다.

        routes.MapRoute(
            "Default",                                              // Route name
            "{controller}/{action}/{id}",                           // URL with parameters
            new { controller = "Home", action = "Index", id = "" }  // Parameter defaults
        );

누군가가 아래의 두 가지 제안을 반대했지만 솔루션을 게시하지 않은 것 같습니다!

답변:


203

ActionLink의 올바른 오버로드를 사용하고있는 것 같지 않습니다. 이 시도:-

<%=Html.ActionLink("Modify Villa", "Modify", new {id = "1"})%>

이것은보기가 / Views / Villa 폴더에 있다고 가정합니다. 그렇지 않다면 나는 당신이 필요하다고 생각합니다 :-

<%=Html.ActionLink("Modify Villa", "Modify", "Villa", new {id = "1"}, null)%>

4
좋은 호출-문제는 해당 함수의 첫 번째 오버로드가 "HtmlAttributes"를 네 번째 매개 변수로 사용한다는 것입니다. 따라서 ", null"을 추가하면 컴파일러가 인라인 개체를 경로 매개 변수로 사용하게됩니다.
Timothy Khouri

26

MVC 4에서는 한보기에서 다른 컨트롤러를 통해 Id 또는 기본 키를 전달하는 다른 컨트롤러로 연결할 수 있습니다.

@Html.ActionLink("Select", "Create", "StudentApplication", new { id=item.PersonId }, null) 

12

ID 앞에 @를 넣지 마십시오.

new { id = "1" }

프레임 워크는 매개 변수 / 경로에 불일치가있을 때? Lenght로 "번역"합니다.


5

MVC 5에서 매우 유사합니다.

@Html.ActionLink("LinkText", "ActionName", new { id = "id" })

1

ID는 @사인 인 앞에서도 작동 하지만 그 뒤에 하나의 매개 변수를 추가해야합니다. 그건null

다음과 같이 보입니다.

@Html.ActionLink("Label Name", "Name_Of_Page_To_Redirect", "Controller", new {@id="Id_Value"}, null)
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.