尝试从 URL 隐藏到主控制器/主页
本文关键字:控制器 主页 隐藏 URL | 更新日期: 2023-09-27 17:56:12
>我引用这个问题来尝试完成这项工作,但它仅适用于我的索引方法,我不确定为什么。
我的项目有一个区域(如果相关的话),我有大约 5 个不同的视图,我想在 url 中隐藏/home/。
法典:
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"JobResults", // Route name
"JobSearch/{title}-{id}", // URL with parameters
new { controller = "JobSearch", action = "Job" }, // Parameter defaults
new[] { "inkScroll.Web.Controllers" }
);
routes.MapRoute("home", "{action}",
new { controller = "Home", action = "index" });
routes.MapRoute(
"Default",
"{controller}/{action}/{id}",
new
{
controller = "^(account|common|base|jobsearch)$", //every controller goes in here
action = "Index",
id = UrlParameter.Optional
},
new[] { "inkScroll.Web.Controllers" }
);
我在MVC 5的基于属性的路由功能的帮助下解决了同样的问题 ASP.NET。假设,我的主控制器中有一个名为"联系我们"的操作,如下所示:
public ActionResult ContactUs()
{
return View();
}
我曾经得到联系我们的网址作为/Home/ContactUs
。但是,我希望它只是/ContactUs
.因此,我使用路由属性装饰ContactUs操作,如下所示:
[Route("ContactUs")]
public ActionResult ContactUs()
{
}
所以,这对我来说非常有效。因此,如果您使用的是 MVC 5 ASP.NET 我会说,请利用 MVC5 的这一出色功能。它不仅可以使您免于分离路由逻辑和操作,而且可以轻松解决许多问题。
如果 ASP.NET MVC5 不适合您,或者您不想在操作方法上使用路由属性,那么,也许以下路由可以工作:(我没有测试它)
routes.MapRoute("Default", "",
new { controller = "Home", action = "index" });
本页包含有关属性路由的有用资源:http://blogs.msdn.com/b/webdev/archive/2013/10/17/attribute-routing-in-asp-net-mvc-5.aspx
捕获所有通配符路由,因为最后一个通配符路由将起作用
routes.MapRoute("home2", "{*path}",
new { controller = "Home", action = "index" });