如何在单个控制器的情况下更改RoutingUrl for MVC应用程序

时间:2010-12-17 05:35:47

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

我有一个ASP.NET MVC应用程序。

我将routingUrl设为 http:// myapp / Home / Products / Productname / DocTypename / CountryName 现在我正在尝试将网址设为 http:// myapp / Products /产品名称/文档名称/国家名称

由于我只有一个控制器,我想从网址中删除主页目录。

这是我在Global.asax中的代码:

public static void RegisterRoutes(RouteCollection routes) 
    { 
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

        routes.MapRoute( 
            "Default", // Route name 
            "{controller}/{action}/{ProductName}/{DocTypename}/{CountryName}", // URL with parameters 
            new { controller = "Home", action = "Products", ProductName = UrlParameter.Optional, DocTypename = UrlParameter.Optional, CountryName = UrlParameter.Optional } // Parameter defaults 
        ); 
}

此处ProductName / DocTypename / CountryName是动态的。

当我在上面的代码中没有指定控制器时,我收到以下错误:

RouteData必须包含名为“controller”的项目,其中包含非空字符串值。

感谢您的时间。

由于

1 个答案:

答案 0 :(得分:1)

尝试这条路线,但要确保它在默认路线之前..

 routes.MapRoute( 
            "Default", // Route name 
            "{action}/{ProductName}/{DocTypename}/{CountryName}", // URL with parameters 
            new { controller = "Home", action = "Products", ProductName = UrlParameter.Optional, DocTypename = UrlParameter.Optional, CountryName = UrlParameter.Optional } // Parameter defaults 
        );