2017-05-25 94 views
0

我必须能够应对这样的路线: MyController/ElementType 出于这个目的,我创建了如自定义路线这样的:微分MVC路由为{}控制器/参数{控制器}/{行动} PARAM = myvalue的

context.MapRoute(
        "NameOfTheRoute", 
        "MyPath/{controller}/{elementType}", 
        new { controller = "Elements", action = "Create" } 
       ); 

,它工作正常,问题是,当我有这样 /MyPath/Elements/GetElementType?elementType=fire88

GetElementType的路线是不同的动作,但它进入Create行动,因为我之前宣布自定义路线,我该如何让知道r外出他们是不同的行动?

回答

1

为什么要这条路线,因为你没有定义route处理action所以MyPath/{controller}/{elementType}意味着后controller一切的名称将被视为{elementType}所以 你必须创建另一个将处理action另一条路线的原因

routes.MapRoute(
    "MyPathRouteWithAction", 
    "MyPath/{controller}/{action}/{elementType}", 
    new {controller = "Elements", action = "Create"} 
); 

routes.MapRoute(
    "NameOfTheRoute", 
    "MyPath/{controller}/{elementType}", 
    new {controller = "Elements", action = "Create"} 
); 

第一custom route将处理routs/MyPath/Elements/GetElementType/fire88在我的情况

+0

的网址是不是'/ mypath中/元/ GetElementType/fire88',我就像'/ MyPath/Elements/GetElementType?elementType = fire88'。我现在所做的是创建一个链接,执行如下操作:'link 1'并修改'default'路由,只是将'id'改为'elementType',现在它正在工作,但我不是确定这是最好的方式... – AlexGH

+0

@AlexGH你应该使用'link 1' ' – Usman

+0

我想这样第一:link 1,但我得到这样的网址:'/ MyPath/Elements/GetElementType?elementType = fire88'我可能没有正确更新浏览器,因为我现在再试一次,正在这样工作,谢谢 – AlexGH