尝试从 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" }
);

尝试从 URL 隐藏到主控制器/主页

我在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" });