2009-04-10 2 views
2

, 왜 반환ASP.NET MVC 경로가 변수와 함께 나타나는 이유는 무엇입니까? 내 MVC 응용 프로그램에서

http://localhost:13/Forms/Edit/123 

http://localhost:13/Forms/Edit?member=123 

insted

Return RedirectToAction("Edit", "Forms", New With {.member = "123"}) 

합니까?

<%=Html.ActionLink("MyLink", "Edit", "Forms", New With {.member = "123"}, Nothing)%> 

같은 일을합니까?

+0

포스트 MVC 경로 테이블 당신은거야 더 나은 대답을 얻으십시오 ... –

+0

루트 테이블 및 @ tvanoffson의 답변에 대한 귀하의 언급의 결합은 솔루션으로 안내해주었습니다. 기본 MapRoute가 먼저 나열되었으므로 이후에 추가 한 모든 것을 트럼핑했습니다. – gfrizzle

답변

5

표준 라우팅은 id를 세 번째 매개 변수로 사용하도록 설정됩니다. "회원"을 "id"로 변경하면 예상 한 경로를 얻을 수 있습니다.

Return RedirectToAction("Edit", "Forms", New With { .id = "123"}) 
6

tvanfosson이 말한 것처럼 "id"는 기본 경로 엔진이 찾도록 설정 한 것입니다. 세 번째 매개 변수로 다른 무엇이라도 그것은 querystring으로에 tacted됩니다.

왜?

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

당신과 같이, 추가 routes.MapRoute() 행을 추가하여이를 변경할 수 있습니다 : 때문에 당신의 Global.asax에서이 방법의

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

routes.MapRoute(
    "Default2", 
    "{controller}/{action}/{member}", 
    new { controller = "Home", action = "Index", member = "" } 
); 
관련 문제