这是关于使用route属性定义路由。我有两个控制器
第一控制器
[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匹配,则会发生这种情 该请求已找到以下匹配的控制器类型: XYZ.Controllers.AccountController XYZ.Controllers.CoursesController
我知道我有第二个控制器的可选参数,因此当我尝试访问xyz.net/Member/Login时,它会找到两个操作方法并获得多个控制器错误。
我的问题是,如何在不改变当前路线的情况下解决此问题。我尝试了Order,Precedence但没有成功。
答案 0 :(得分:0)
正如我上面评论的那样,根据您选择的标签,您使用的是MVC 4,但MVC 5支持属性路由。如果您真的在MVC 5中,那么以下参考对您非常有用:
https://blogs.msdn.microsoft.com/webdev/2013/10/17/attribute-routing-in-asp-net-mvc-5/
最重要的是,当您注册路线时,您必须使用有效的属性路由 - >
public static void RegisterRoutes(RouteCollection routes)
{
routes.MapMvcAttributeRoutes();
}
并确保您没有定义任何可能与您选择使用的属性相关的其他路线。
否则您选择的属性应该可以正常工作。非常简单的应用程序。
答案 1 :(得分:0)
web api约束也可能适用于您要完成的任务
http://www.asp.net/web-api/overview/web-api-routing-and-actions