[asp.net-mvc] Html.ActionLink를 사용하여 다른 컨트롤러에서 작업 호출

를 사용하여 컨트롤러 사이를 탐색하려고합니다 ActionLink. 나는 예를 들어 내 문제를 말할 것이다.

Hat 컨트롤러의 인덱스보기에 있으며 아래 코드를 사용하여 제품 컨트롤러의 세부 사항 조치에 대한 링크를 작성하려고합니다.

<%= Html.ActionLink("Details", "Details", "Product", new { id=item.ID }) %>

제품 컨트롤러의 세부 사항에 대한 링크를 작성하는 대신 Hat 컨트롤러에서 세부 사항 조치에 대한 링크를 생성하고 끝에 길이 매개 변수를 추가합니다.

Hat/Details/9?Length=7

HTML.ActionLink이 문제로 인해 컨트롤러 간을 전환하는 데 사용할 수 없습니다 . 내가 뭘 잘못하고 있는지 알려 주시면 감사하겠습니다. 감사

추신 : MVC와 함께 제공되는 기본 경로 설정을 사용하고 있습니다

routes.MapRoute("Default", "{controller}/{action}/{id}",
                     new { controller = "Home", action = "Index", id = "" } );



답변

당신이 원하는 것은이 과부하입니다.

//linkText, actionName, controllerName, routeValues, htmlAttributes
<%=Html.ActionLink("Details", "Details",
    "Product", new {id = item.ID}, null) %>


답변

해당 매개 변수를 사용하면 잘못된 오버로드 된 기능 / 방법을 트리거합니다.

나를 위해 일한 것 :

<%= Html.ActionLink("Details", "Details", "Product", new { id=item.ID }, null) %>

HtmlHelper.ActionLink (string linkText, string actionName, string controllerName, object routeValues, object htmlAttributes)를 실행합니다.

MVC 4를 사용하고 있습니다.

안녕!


답변

다음과 같이 명확하게하기 위해 명명 된 매개 변수를 사용하여 이러한 도우미를 작성하는 것이 좋습니다.

@Html.ActionLink(
    linkText: "Details",
    actionName: "Details",
    controllerName: "Product",
    routeValues: new {
        id = item.ID
    },
    htmlAttributes: null
)


답변

MVC Futures 어셈블리를 얻는다면 (권장 할 것임) ActionLink 및 람다를 생성 할 때 제네릭을 사용하여 경로를 구성 할 수 있습니다.

<%=Html.ActionLink<Product>(c => c.Action( o.Value ), "Details" ) %>

선물 조립은 여기에서받을 수 있습니다 : http://aspnet.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=24471


답변

당신은 ActionLink의 과부하에 잘못 맞았습니다. 대신 사용해보십시오.

<%= Html.ActionLink("Details", "Details", "Product", new RouteValueDictionary(new { id=item.ID })) %>


답변

그것을 시도해보십시오 그것은 잘 작동합니다

  <%:Html.ActionLink("Details","Details","Product",  new {id=item.dateID },null)%>


답변

다른 해결책은 Urlhelper 객체 를 사용하여 다음과 같이 태그 의 href속성 을 설정하는 것입니다 <a>.

<a href="@Url.Action("Details", "Product",new { id=item.ID }) )">Details</a>