我希望当URL只包含一个控制器(无动作)时,它会自动瞄准输入控制器的Index动作。但是,我仍然希望默认路由成为登录页面。
默认路线为:
routes.MapRoute(
name: "Primary",
url: "{controller}/{action}/{id}",
defaults: new {controller = "Account", action = "SignIn", id = UrlParameter.Optional}
);
第二条路线应该是什么样的?所以mydomain.com/Account应该转到Controller = Account,Action = Index,同时保持域/ controller / action / params的正常结构不变。
谢谢!
答案 0 :(得分:1)
routes.MapRoute(
name: "Default",
url: "ApplicantProfile/{action}/{id}",
defaults: new { controller = "ApplicantProfile", action = "Start", id = UrlParameter.Optional }
);
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { action = "Index", id = UrlParameter.Optional }
);
假设你有ApplicantProfileController,HomeController和OtherController,这将导致:
/ApplicantProfile → ApplicantProfileController.Start
/Other → OtherController.Index
/SomeOtherPath → default 404 error page
/ → default 404 error page
有关路由的介绍,请参阅http://www.asp.net/mvc/tutorials/older-versions/controllers-and-routing/asp-net-mvc-routing-overview-cs。它有点旧,但它很好地涵盖了基础知识。
路由自上而下发生,意味着它在路由表中的第一个匹配处停止。在第一种情况下,您将首先匹配您的ApplicantProfile路线,以便使用该控制器。第二种情况从路径获取其他,找到匹配的控制器并使用它。最后2个找不到匹配的控制器,并且没有指定默认值,因此返回默认的404错误。我建议为错误添加一个合适的处理程序。请在此处和此处查看答案。