Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 设置路由属性阻止默认路由(控制器/操作)_C#_Asp.net Mvc_Asp.net Mvc 4_Asp.net Mvc Routing - Fatal编程技术网

C# 设置路由属性阻止默认路由(控制器/操作)

C# 设置路由属性阻止默认路由(控制器/操作),c#,asp.net-mvc,asp.net-mvc-4,asp.net-mvc-routing,C#,Asp.net Mvc,Asp.net Mvc 4,Asp.net Mvc Routing,如果我在我的操作上设置route属性,如下所述 public class AccountController : Controller { [Route("Login")] public ActionResult Login() { } } 我的默认路径不工作,即/Account/Login 我想这两个网址都应该工作 /登录 /帐户/登录 好了,现在我得到你想要的了。在您的RouteConfig.cs(App\u Start文件夹)中,您有: publ

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

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

    }
}
我的默认路径不工作,即
/Account/Login

我想这两个网址都应该工作

  • /登录
  • /帐户/登录

  • 好了,现在我得到你想要的了。在您的
    RouteConfig.cs
    App\u 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 }
            );
        }
    
    您只需在默认值之后添加另一条路由:

        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();
        }
    }
    

    我想保留RouteAttributePlease发布您的整个路线配置。在到达默认路由之前,某些路由可能与您的
    /Account/Login
    URL匹配,但如果未看到配置,则无法告诉您如何修复它。