2012-04-12 3 views
4

{controller}/{action}/{id} 대신 {controller}/{action}/{id}/{another id}과 같은 다중 매개 변수를 사용할 수 있습니까?MVC 4 : 다중 컨트롤러 동작 매개 변수

저는 MVC를 처음 사용합니다 (일반 웹 페이지에서 제공됨). 가능한 경우 MVC는 UrlData과 같은 도우미 메서드를 웹 페이지에 제공합니까?

답변

4

당신은 다음과 같이 당신의 Global.asax에 새로운 경로를 매핑해야합니다

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

그런 다음 컨트롤러의 행동에이 같은 매개 변수를 선택할 수 있습니다 :

public ActionResult MyAction(string id, string another_id) 
{ 
    // ... 
} 
+1

당신은 당신의 행동 방법 매개 변수 목록에 첫 번째 ID를 추가해야합니다 : 공공 ActionResult의 시켜라 (문자열 ID, 문자열 another_id)를 모두 IDS에 의해 사용되도록 예제 액션. – Tommy

+0

@ Tommy thanks, updated – McGarnagle

+1

IIS express 및 full IIS 7에서이 작업을 시도했지만 두 번째 매개 변수로 Error 404.0이 발생했습니다. 나는 http://www.asp.net/mvc/tutorials/older-versions/deployment/using-asp-net-mvc-with-different-versions-of-iis-cs를 읽으려고했지만 아무 도움도주지 못했다. 어떤 제안? – DavidHyogo

3

예. 경로에서 여러 매개 변수를 정의 할 수 있습니다. 먼저 Global.asax 파일에서 경로를 정의해야합니다. URL 세그먼트 또는 URL 세그먼트의 일부로 매개 변수를 정의 할 수 있습니다.

public class MyController : Controller 
{ 
    public ActionResult Index(string id1, string id2) 
    { 
    //.. 
    } 
} 
: 귀하의 예제를 사용하려면 다음 ID1과 ID2 세그먼트를 추출하고 액션 메소드에서 해당 변수에 할당하는 경로를 일치 구문 분석

{controller}/{action}/{id1}/{id2} 

MVC의 인프라와 같은 경로를 정의 할 수 있습니다

또는 쿼리 문자열 또는 폼 변수에서 입력 매개 변수를 받아 들일 수도 있습니다. 예를 들어 :

MyController/Index/5?id2=10 

라우팅 자세히 설명 here

관련 문제