2012-05-02 3 views
0

나는 MVC3에서 여러 매개 변수를 사용하여 링크를 생성하는 방법은 무엇입니까?

public ViewResult Index(string id, string participant="", string flagged = "") 

id이 컨트롤러에 대한 내 Global.asax에있는 경로 값

처럼 보이는 컨트롤러 방법이있다. 나는 링크가 MVC 3이 사용하는 면도기 스크립트와 같은 링크를 생성하는 방법이 있나요

.../controller/Index/id?participant=yes&flagged=no 

과 같을 것이다 있도록 정기적 인수로 다른 값을 전달하려면?

답변

7

당신은 ActionLink 방법의 routeValues 인수에 모든 매개 변수를 전달할 수 :

@Html.ActionLink(
    "go to index",     // linkText 
    "index",      // actionName 
    new {       // routeValues 
     id = "123", 
     participant = "yes", 
     flagged = "no" 
    } 
) 

기본 라우팅 설정을 가정이 생성됩니다

<a href="/Home/index/123?participant=yes&amp;flagged=yes">go to index</a> 

업데이트 :

예를 들어, ActionLink에서 Length=6이라는 URL을 생성 한 경우 잘못된 오버로드를 사용했다는 의미입니다. 예를 들어이 잘못입니다 : 이것은 각 매개 변수의 이름을 함께 넣어 한 의견에서 잘못된 이유는 분명하다

@Html.ActionLink(
    "go to index",    // linkText 
    "index",     // actionName 
    "home",     // routeValues 
    new {      // htmlAttributes 
     id = "123", 
     participant = "yes", 
     flagged = "no" 
    } 
) 

. 따라서 Intellisense를주의 깊게 읽고 있는지 확인하십시오 (Intellisense가 Razor에서 작동하도록 충분히 운이 좋으면 :-)) 도우미 메서드의 올바른 오버로드를 선택하십시오.

당신이 컨트롤러의 이름을 지정하려는 경우 올바른 과부하는 다음

@Html.ActionLink(
    "go to index",    // linkText 
    "index",     // actionName 
    "home",     // controllerName 
    new {      // routeValues 
     id = "123", 
     participant = "yes", 
     flagged = "no" 
    }, 
    null      // htmlAttributes 
) 

주의 마지막 인수로 전달되는 null. 이것이 htmlAttributes 매개 변수에 해당합니다.

+0

나는 이것을 이미 시도했지만 어떤 이유로 날 길이 = 6의 매개 변수를 제공 했음에도 불구하고 효과가있었습니다. –

+1

더 자세히 설명하려고하는 내 업데이트를 확인하십시오. –

+0

@DarinDimitrov가 저의 간단한 질문에 다시 한번 대답했습니다 .... 그의 답변에 자세한 내용을 설명했습니다. 감사! – JoshYates1980

3

당신은이에 대한 ActionLink를 사용할 수 있습니다

@Html.ActionLink("Title", 
       "ActionName", 
        new {id = 1, participant = "yes", flagged = "no"}) 
관련 문제