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.