使用属性路由(路由属性),我在两个不同的控制器中有两个具有相同名称的操作方法,如下所示
public class HomeController : Controller
{
//URL: /accessMethod
[Route(“accessMethod”)]
public ActionResult Method1()
ViewBag.Message = "Welcome to ASP.NET MVC!";
return View();
}
}
public class AccountController : Controller
{
//URL: /accessMethod
[Route(“accessMethod”)]
public ActionResult Method2()
ViewBag.Message = "Welcome to ASP.NET MVC!";
return View();
}
}
在点击网址http://localhost:1234/accessmethod时,发生了以下错误
>应用程序中的服务器错误。找到了与URL匹配的多种控制器类型。这个可以 如果多个控制器上的属性路由匹配请求,则会发生 URL。
请求已找到以下匹配的控制器类型: mvc_Test.Controllers.Page1Controller mvc_Test.Controllers.Page2Controller
请求您,如何在不使用RoutePrefix属性的情况下解决此问题?而不是RoutePrefix,我们可以使用Controller名称吗?那么属性路由的主要用途是什么?
答案 0 :(得分:0)
您可以将RoutePrefix添加到控制器:
[RoutePrefix("Account")]
public class AccountController : Controller
{ ...
然后,您可以访问http://localhost:1234/account/accessmethod帐户。留下另一个原样
更新:在您的注册路线图中使用以下地图应该适用于http://localhost:1234/account/accessmethod和 http://localhost:1234/home/accessmethod
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional
});