【问题标题】:Trying to hide to HomeController /Home from the URL试图从 URL 隐藏到 HomeController /Home
【发布时间】:2014-04-02 22:29:42
【问题描述】:

我引用了this question 来尝试完成这项工作,但它只适用于我的索引方法,我不知道为什么。

我的项目中有一个区域(如果相关的话),我有大约 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" }
);

【问题讨论】:

    标签: c# asp.net asp.net-mvc asp.net-mvc-routing


    【解决方案1】:

    我在 ASP.NET MVC 5 的基于属性的路由功能的帮助下解决了同样的问题。假设我的主控制器中有一个名为 ContactUs 的操作,如下所示:

    public ActionResult ContactUs()
    {
      return View();
    }
    

    我曾经将 ContactUs 的 URL 设为 /Home/ContactUs。但是,我希望它只是 /ContactUs。因此,我将使用 Route 属性装饰 ContactUs 操作,如下所示:

    [Route("ContactUs")]
    public ActionResult ContactUs()
    {
    
    }
    

    所以,这对我来说非常有效。因此,如果您使用的是 ASP.NET MVC 5,我会说,利用 MVC5 的这一出色功能。它不仅可以让你免于分离Route Logic和Actions,还可以非常轻松地解决很多问题。

    如果 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

    【讨论】:

    • 很棒的电话。我正在使用mvc5。我最终得到了类似的解决方案,但我将路由卡在路由表中,而不是属性路由。我想我会这样做。干净多了。
    【解决方案2】:

    捕获所有wildcard 路由,因为最后一个可以工作

    routes.MapRoute("home2", "{*path}",
       new { controller = "Home", action = "index" });
    

    【讨论】:

    • 感谢您的回答。这有点工作。它把我带到了正确的网址(所以,里面没有 /home),但我得到了“资源”找不到错误。我缺少路由中的某些内容吗?我在我的默认路由下面添加了上面的代码
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-12
    • 1970-01-01
    • 2015-12-19
    • 2010-11-03
    • 1970-01-01
    • 2016-03-31
    相关资源
    最近更新 更多