【问题标题】:Removing Controller from url in a specific scenario在特定场景中从 url 中删除 Controller
【发布时间】:2013-09-08 18:37:28
【问题描述】:

当用户点击AboutContact 中的ASP.NET MVC sample application 页面时,我想从url 中删除名为HomeController。我试过了,但它给了我一个 404 错误。

routes.MapRoute("Home", "{action}/{id}",
    new { controller = "Home" });

当我删除这一切时,一切正常。
注意我只想在 Controller 为 Home 时删除 Controller 名称。其他控制器应保持不变。 此外,我将代码保存在上面的Route.Config 文件中

 routes.MapRoute("Home", "{action}/{id}",
     new { controller = "Home" });

 routes.MapRoute(
     name: "Default",
     url: "{controller}/{action}/{id}",
     defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
        );

必填结果

abc.com/Home/About 应显示为 abc.com/About
abc.com/Home/Contact 应显示为 abc.com/Contact

【问题讨论】:

  • 你在 Seneca 学习过吗?
  • 不。从来没有@ayilmaz

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


【解决方案1】:

你应该在 global.asax 中映射新路由(在默认路由之前添加),例如:

routes.MapRoute("SpecificRouteforHomeController", "{action}/{id}", new {controller = "Home", action = "Index", id = UrlParameter.Optional});

// default route  any defalt you want
routes.MapRoute("Default", "{controller}/{action}/{id}", new {controller = "Account", action = "Login", id = UrlParameter.Optional} );

【讨论】:

  • 这是特定于 Home/Index 的。我想要它用于 Home/About 和 Home/Contact
  • Rex 它不能与除家庭和帐户之外的任何其他控制器一起使用。我想要的是当控制器名称为网站时删除控制器并传递所有剩余的控制器和操作
【解决方案2】:
 routes.MapRoute(
 name: "Default",
 url: "{controller}/{action}/{id}",
 defaults: new { controller = "DefaultControllerName", action = "Index", id = UrlParameter.Optional }
    );

如果您指定控制器名称,那么这将与该控制器名称一起使用。如果不是默认情况下,它会将控制器名称作为 DefaultControllerName

【讨论】:

    猜你喜欢
    • 2023-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-09
    • 2013-08-23
    • 2017-01-20
    • 2015-04-28
    • 1970-01-01
    相关资源
    最近更新 更多