0

하나의 동작에 두 개의 다른 경로를 매핑 할 수있는 하나의 MapRoute을 정의하고 싶습니다.하나의 동작에 두 개의 경로를 결합하십시오.

public class AddressesController : BaseController 
{ 
    public ActionResult Create() 
    { 
     ... 
    } 
} 

액션에 매핑해야 두 개의 경로를 다음과 같습니다 :

나는 주소를 만들 수있는 작업이

/주소/ 만들기 -> 새 주소를 만들려면
/Projects/3/Addresses/Create -> id = 3 인 프로젝트에 새 주소를 만들려면

나는이 작업을 수행하려면 다음지도 노선의 설정을 시도했지만 작동하지 않았다 :이

routes.MapRoute(
    name: "CreateAddress", 
    url: "{projects}/{projectId}/{controller}/{action}", 
    defaults: new { projects = "", projectId = UrlParameter.Optional, controller = "Addresses", action = "Create" }, 
    constraints: new { project = "(Projects)?" }); 

는 경로 /Projects/3/Addresses/Create가 아니라 /Addresses/Create하고있다 config (설정).

답변

1

같은 경로에서 두 가지 방법으로 작업 할 수는 없습니다. ASP.NET MVC는 /주소/작동 만들기 있는지 확인하는 기본 하나되어 있기 때문에

당신은 단지 여분의 경로를 지정해야합니다

/프로젝트에 대
routes.MapRoute(
    name: "Default", 
    url: "{controller}/{action}/{id}", 
    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }); 

/3/Addresses/ 위의 경로 앞에 이것을 넣으십시오 :

routes.MapRoute(
    name: "CreateAddress", 
    url: "Projects/{projectId}/{controller}/{action}", 
    defaults: new { controller = "Addresses", action = "Create" }); 
관련 문제