我目前正在尝试更改Google Analytics的一些网址,因为我希望Google网站中的网址更易于阅读。
现在,我的登录页面位于根目录,仪表板页面也位于根目录。但是,当用户键入www.somesite.com/login
时,我希望我的登录页面显示为www.somesite.com
。截至目前,此登录页面位于accounts / login,显示www.somesite.com/accounts/login
。
当控制器帐户和操作登录命中时,我是否可以编辑RouteConfig文件以显示/登录?目前,这不起作用:
routes.MapRoute(
name: "Default",
url: "Login/{controller}/{action}/{id}",
defaults: new
{
controller = "Accounts",
action = "Login",
id = UrlParameter.Optional
},
namespaces: new[] { "somenamespace" }
);
正在调用的行动:
public ActionResult Logon()
{
return View(ViewModel.CreateModelForPageLoad<LogOn>());
}
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Logon(Logon model)
{
//Log in code
}
答案 0 :(得分:2)
我现在无法测试,但这应该有效:
routes.MapRoute(
name: "Login",
url: "login",
defaults: new
{
controller = "Accounts",
action = "Logon"
}
);
答案 1 :(得分:0)
routes.MapRoute(
name: "Default",
url: "Login",
defaults: new
{
controller = "Accounts",
action = "Login",
id = UrlParameter.Optional
},
namespaces: new[] { "somenamespace" }
);
更简单的方法是进行属性路由,然后你只需要这个
public class Accounts : Controller{
[HttpPost, Route("login")]
public ActionResult Login(int id)
{....}
}
上面当然可以在MVC 5中工作,因为属性路由是从MVC 5开始添加的。
答案 2 :(得分:0)
public class HomeController:Controller {
public ActionResult Login()
{
return View();
}
public ActionResult Dashboard()
{
return View();
}
}
公共类RouteConfig { public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute(&#34; {资源}个.axd / {*} PATHINFO&#34);
routes.MapRoute(
name: "Login",
url: "login/{action}/{id}",
defaults: new { controller = "Home", action = "Login", id = UrlParameter.Optional }
);
routes.MapRoute(
name: "Dashboard",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
}