如何在ASP.NET MVC 5中的两个不同控制器中访问具有相同名称的操作方法? [重复]

问题描述 投票:2回答:1

使用属性路由(路由属性),我在两个不同的控制器中有两个具有相同名称的操作方法,如下所示

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名称吗?那么属性路由的主要用途是什么?

c# asp.net-mvc asp.net-mvc-routing attributerouting
1个回答
0
投票

您可以将RoutePrefix添加到控制器:

[RoutePrefix("Account")]
public class AccountController : Controller
{ ...

然后,您可以访问http://localhost:1234/account/accessmethod帐户。离开另一个原样

更新:在您的注册路线图中具有以下地图应适用于http://localhost:1234/account/accessmethodhttp://localhost:1234/home/accessmethod

routes.MapRoute(
    name: "Default",
    url: "{controller}/{action}/{id}",
    defaults: new { controller = "Home", action = "Index", id =  UrlParameter.Optional 
});
© www.soinside.com 2019 - 2024. All rights reserved.