C# 设置路由属性阻止默认路由(控制器/操作)
如果我在我的操作上设置route属性,如下所述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
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匹配,但如果未看到配置,则无法告诉您如何修复它。