2017-02-06 6 views
0

엔티티를 만들기위한 MVC 페이지가 있습니다. 완료되면 상위 엔티티로 리디렉션하려고합니다. 나는 이런 식으로 작업을 수행합니다ASP.NET MVC가 다른 매개 변수와 마찬가지로 "id"라는 경로 매개 변수를 처리하도록합니다.

return RedirectToAction("Edit", new { foo = vm.Parent }); 

/Entities/Edit?foo=234

로 렌더링하지만 ASP MVC는 경로를 집어 들고 : 나는 다른 매개 변수 이름을 사용하는 경우,가 URL의 PARAM로 해석됩니다

return RedirectToAction("Edit", new { id = vm.Parent }); 

매개 변수는 id이며 특수한 경우 URL은 /Entities/Edit/234입니다. 이것은 라우팅이 이것으로 작동하지 않기 때문에 나에게 효과가 없다. /Entities/Edit?id=234과 같은 URL을 얻으려고합니다.

어떻게 강제로 작동합니까? 경로 설정 : 그것의 모습으로

routes.MapRoute(
      name: "Default", 
      url: "{controller}/{action}/{id}", 
      defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
     ); 
+3

경로 설정에서 다음과 같은 매핑 된 경로를 찾습니다. "{controller}/{ action}/{id} "'그리고 질문에 세부 사항을 추가하십시오. – spender

+1

기본 경로를 사용하고 있습니까? –

+0

@spender가 경로 설정을 추가했습니다. – Johanes

답변

0

만 만 정의 UrlParameterid을 지정된 기본 경로 설정 경로를 사용하고 있습니다.

routes.MapRoute(
    name: "ControllerName", 
    url: "controllername/edit/{foo}" 
); 

을 아니면 전 세계적으로 대신 idfoo을 사용하고자하는 경우라면, 기존의 경로 변경 : 사용자 정의 매개 변수를 원하는 경우에, 당신은로 정의해야합니다

routes.MapRoute(
    name: "Default", 
    url: "{controller}/{action}/{foo}", 
    defaults: new { controller = "Home", action = "Index", foo = UrlParameter.Optional } 
); 

을 또는 불필요한 검색어 문자열 매개 변수가있는 잘 보이는 URL을 원하지 않는 경우 기본 설정을 다음과 같이 변경하십시오.

routes.MapRoute(
    name: "Default", 
    url: "{controller}/{action}", 
    defaults: new { controller = "Home", action = "Index" } 
);