【问题标题】:Setting route attribute prevent the default route(Controller/Action)设置路由属性防止默认路由(控制器/动作)
【发布时间】:2016-07-03 09:50:51
【问题描述】:

如果我在我的操作上设置路由属性,如下所述。

public class AccountController : Controller
{
    [Route("Login")]
    public ActionResult Login()
    {

    }
}

我的默认路由不起作用,即/Account/Login

我希望两个网址都可以工作

  1. /登录
  2. /帐号/登录

【问题讨论】:

  • 请发布您的整个路线配置。某些路由可能在到达默认路由之前与您的/Account/Login URL 匹配,但是如果没有看到配置,则无法告诉您如何修复它。

标签: c# asp.net-mvc asp.net-mvc-4 asp.net-mvc-routing


【解决方案1】:

好的,现在我得到了你想要的。在您的 RouteConfig.csApp_Start 文件夹)中,您有:

    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
        );
    }

您应该只添加另一条路线AFTER默认:

    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
        );

        //this is your additional route
        routes.MapRoute(
            name: "Login",
            url: "Login",
            defaults: new { controller = "Account", action = "Login"}
        );
    }

删除Login 方法上方的Route 属性。现在您将能够使用两个 url 调用您的方法。

替代在您的评论之后。像这样改变你的控制器:

public class AccountController : Controller
{
    public ActionResult Login()
    {
        return Login();
    }

    [Route("Login")]
    public ActionResult Login2()
    {
        return Login();
    }
}

【讨论】:

  • 我要保留RouteAttribute
猜你喜欢
  • 1970-01-01
  • 2018-01-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-13
  • 1970-01-01
相关资源
最近更新 更多