我有一个带有操作方法的控制器,我已经配置了属性路由:
[RoutePrefix("foos")]
public class FooController : BaseController
{
[HttpGet]
[Route("")]
public ActionResult List()
{
return View();
}
}
此处的路由配置:
public static void RegisterRoutes(RouteCollection routes)
{
routes.MapMvcAttributeRoutes();
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
}
一切正常。当我导航到http://webPageAddress/foo/
时,我的动作被调用并返回列表。
现在我想将此路线设为默认路线。我添加了新属性:
[HttpGet]
[Route("~/")]
[Route("")]
public ActionResult List()
{
return View();
}
结果是默认路由(http://webPageAddress/
)有效,但旧路由(http://webPageAddress/foo/
)不再起作用(http 404代码)。
如何混合并正确配置?
答案 0 :(得分:1)
您需要确保http://webPageAddress/foo/
的路线在 http://webPageAddress/
的路线之前已注册。使用属性路由,唯一的方法是使用Order
属性来设置顺序。
[HttpGet]
[Route("~/", Order = 2)]
[Route("", Order = 1)]
public ActionResult List()
{
return View();
}
参考:Understanding Routing Precedence in ASP.NET MVC and Web API