Asp.net mvc 4 参数匹配路径

Asp.net mvc 4 参数匹配路径,asp.net-mvc-4,episerver,Asp.net Mvc 4,Episerver,我是新加入routes的 有人知道这条路线有什么问题 /dispatch/Paris/Lixo=未找到页面 /调度?区域=巴黎,部门=利克索//工作 Global.asax: routes.MapContentRoute(name: "customRoute", url: "{region}/{department}", defaults: new { action = "i

我是新加入routes的

有人知道这条路线有什么问题

/dispatch/Paris/Lixo=未找到页面

/调度?区域=巴黎,部门=利克索//工作

Global.asax:

        routes.MapContentRoute(name: "customRoute",
                        url: "{region}/{department}",
                        defaults: new { 
    action = "index", 
    controller = "dispatch", 
    region = UrlParameter.Optional, 
    department = UrlParameter.Optional
}
                        //,contentRootResolver: (s) => s.StartPage
                        );
DispatchController.cs

public ActionResult Index(DispatchPage currentPage, string region, string department)

请注意,您的路线仅包括地区和部门。URL不假定控制器在那里。另外,我假设定义了一个默认路由。因此:

/dispatch/Paris/Lixo
-不适合任何东西<代码>{region}/{department}没有控制器,因此路由处理程序将
调度
分配给
区域
巴黎
分配给
部门
Luxo
不适合任何东西,因此整个路线不适合。另一方面,默认路由假定巴黎是一个动作,因此它也不适合

/dispatch?region=Paris&department=Lixo
-将默认路线与默认设置的操作相匹配。请注意,查询字符串参数在路由中不起任何作用,除非它们作为参数传递

我认为,你可能追求的是这条路线:

url: "dispatch/{region}/{department}"

这将很好地捕获第一个url。

我建议查看EPiServer的部分路由,特别是示例。由于您是在epserver解决方案中执行此操作的,因此标准MVC路由不会以相同的方式工作,除非您完全放弃将控制器创建为epserver页面类型控制器。另外,我建议将您的问题发布到ePServer世界论坛,这样可以更好地向ePServer开发人员展示您的问题。