2014-04-23 4 views
0

을 포함 이것은 시나리오입니다. 아시다시피 두 개의 지속적인 인수는 ASP.NET MVC 경로에서 지원되지 않습니다. 그리고 저는 "{param1}/{param2}"와 같은 경로를 분석 할 수는 있지만 원하는 것은 아닙니다.ASP.NET 경로가 여러 인수를

그럼 내 질문은 MVC 경로에서 두 개의 연속 인수에 대한 시나리오를 구현하는 방법입니까?

답변

1

당신은 MvcRouteHandler

public class MyRouteHandler : MvcRouteHandler 
{ 
    protected override IHttpHandler GetHttpHandler(RequestContext requestContext) 
    { 
     var param = requestContext.RouteData.Values["param"].ToString(); 
     var sbString = new StringBuilder(); 
     var sbInt = new StringBuilder(); 

     foreach (var ch in param.ToCharArray()) 
     { 
      if (char.IsDigit(ch)) 
       sbInt.Append(ch); 
      else 
       sbString.Append(ch); 
     } 

     requestContext.RouteData.Values["param1"] = sbString.ToString(); 
     requestContext.RouteData.Values["param2"] = sbInt.ToString(); 

     return base.GetHttpHandler(requestContext); 
    } 
} 

Global.asax에 경로에 추가하고이 때 사용하는 사용자 정의 RouteHandler를 지정하는 사용자 정의 작성해야합니다.

routes.MapRoute(
    "Default", 
    "Test/{param}", 
    new { controller = "Default", action = "Index"} 
).RouteHandler = new MyRouteHandler(); 

조치 매개 변수로 param1 및 param2를 사용하십시오.

public string Index(string param1, int param2) 
{ 
    return param1 + "|" + param2; 
} 

희망이 있습니다.

+1

대단히 감사합니다. leskovar. 귀하의 솔루션이 나를 위해 작동;) –

관련 문제