这个问题在这里已有答案:
使用属性路由(路由属性),我在两个不同的控制器中有两个具有相同名称的操作方法,如下所示
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名称吗?那么属性路由的主要用途是什么?
您可以将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
});