asp.net-mvc - url中没有 Controller 的MVC路由

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

如何配置 ASP.NET MVC 3 路由,使其不在 url 中显示 Controller ?

这是我的路线

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

        routes.MapRoute(
            "HomeActions", 
            "{action}", 
            new { action= "AboutUs" } 
        );

我需要网址:
mysite.com/AboutUs

但我有
 mysite.com/Home/AboutUs

最佳答案

我会非常具体地说明您要路由的网址。并将其放置在默认路由上方。

    routes.MapRoute(
        "HomeActions", 
        "AboutUs", 
        new { controller = "Home", action= "AboutUs" } 
    );

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

对您建议的路线不那么具体可能会产生不良后果。特别是如果在默认路由下面列出。
routes.MapRoute(
    "HomeActions", 
    "{action}", 
    new { controller = "Home", action= "AboutUs" } 
);

例如,如果在默认之后添加了上述路由,则 url http://www.example.com/AboutUs可能匹配路由 {controller = "AboutUs", action = "Index", id = UrlParamter.Optional}。如果您在默认路由之上添加了路由,则查找 url http://www.example.com/Users您可能希望成为 Users Controller 上的 Index 操作现在将在 Home Controller 上查找 Users 操作。

所以,我建议具体说明这样的路线。

关于asp.net-mvc - url中没有 Controller 的MVC路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6047155/

相关文章:

javascript - MVC3::从详细信息 View 中导航表,而不是单击表中的详细信息链接

c# - MVC 5 无法使用 Linq to SQL 类创建 Controller

javascript - 一起使用 Jquery 分页和历史插件的最有效方式

asp.net-mvc-3 - ASP.NET MVC 3 不引人注目的验证失败

c# - 具有重载的 ASP.NET MVC Web API 属性路由

c# - RegularExpressionAttribute 行为中的正则表达式

asp.net-mvc - MVC 替代 iframe

c# - 如何在列表的强类型 View 上使用 LabelFor

asp.net-mvc - 使用 ASP.NET MVC 的 IIS 应用程序请求路由 (ARR)

c# - 如何将参数传递给 Controller ​​构造函数?这是正确的做法吗?