【发布时间】:2016-07-27 03:00:06
【问题描述】:
这是关于使用路由属性定义路由的。我有两个控制器
第一控制器
[AllowAnonymous]
[Route("Member/Login")]
public ActionResult Login(string returnUrl)
{
ViewBag.ReturnUrl = returnUrl;
return View();
}
第二控制器
[Route("{CategoryURL}/{Keywords}")]
public ActionResult BrowseProducts(string CategoryURL, string Keywords)
{
}
如果尝试访问 URL xyz.net/Member/Login,则会出现以下错误
找到多个与 URL 匹配的控制器类型。如果多个控制器上的属性路由与请求的 URL 匹配,就会发生这种情况。 该请求找到了以下匹配的控制器类型: XYZ.Controllers.AccountController XYZ.Controllers.CoursesController
我知道我有第二个控制器的可选参数,因此当我尝试访问 xyz.net/Member/Login 时,它会找到两个要执行的操作方法并获取多控制器错误。
我的问题是,如何在不更改当前路由的情况下解决此问题。我尝试了 Order, Precedence,但没有成功。
【问题讨论】:
-
您在 Global.asax / App_Start 中定义的路线是什么? MVC 5 主要支持属性路由。如果你正在使用它,你需要在你的配置中注册属性路由。
标签: c# asp.net asp.net-mvc asp.net-mvc-4