【问题标题】:ASP.NET MVC URL Route Mapping (URL rewriting) IssueASP.NET MVC URL 路由映射(URL 重写)问题
【发布时间】:2011-11-11 05:23:07
【问题描述】:

这是我的 .Net MVC 文件夹结构:

我有一个名为“Area”的单独文件夹,其中有一个名为“Restaurant”的文件夹。 在这个“Restaurant”文件夹中,我有一个名为“MenuController”的控制器,它的动作名为“Index”

我尝试使用以下代码重写“Global.asax.cs”中的(自定义路由映射)url。

routes.MapRoute(
                "RestaurantMenu", // Route name
                "Restaurant/{id}", // URL with parameters
                new { controller = "/Restaurant/Menu", action = "Index", id = UrlParameter.Optional }
                // Parameter defaults
                );

但它给了我一个 HTTP 404 错误。

【问题讨论】:

    标签: asp.net-mvc url-rewriting routes global-asax


    【解决方案1】:

    路由中的控制器参数应该是控制器的名称,而不是路径:

    如果你的控制器名称是Menu,那么改成这样:

    routes.MapRoute(
        "RestaurantMenu", // Route name
        "Restaurant/{id}", // URL with parameters
        new { controller = "Menu", action = "Index", id = UrlParameter.Optional }
        // Parameter defaults
    );
    

    另一个奇怪的事情是:这条路线是否位于您的 Global.asax 文件中?它应该在您的 RestaurantAreaRegistration.cs 文件中,如下所示;

    public class RestaurantAreaRegistration : AreaRegistration {
    
        public override string AreaName {
            get {
                return "Restaurant";
            }
        }
    
        public override void RegisterArea(AreaRegistrationContext context) {
    
            context.MapRoute(
                  "RestaurantMenu", // Route name
                  "Restaurant/{id}", // URL with parameters
                  new { controller = "Menu", action = "Index", id = UrlParameter.Optional }
                 // Parameter defaults
            );
    
            context.MapRoute(
                "Accommodation_default",
                "accomm/{controller}/{action}/{id}",
                new { action = "Index", id = UrlParameter.Optional }
            );
    
        }
    }
    

    那么你可以试一试。如果您想在此路由中使用 ActionLink,请像这样使用它:

    @Html.ActionLink("MyLink", "Index", "Menu", new { id = 1, Area = "Restaurant"})
    

    我用记事本写了上面的代码,所以可能有一些拼写错误:)

    【讨论】:

      猜你喜欢
      • 2013-01-19
      • 1970-01-01
      • 2011-04-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-26
      • 1970-01-01
      相关资源
      最近更新 更多