控制器的特定路由

时间:2014-02-28 04:40:39

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

我有这个网址:

http://localhost:3256/publicview/details?username=mvcpro4

工作并返回包含数据的视图。

我想成为这个网址:

http://localhost:3256/publicview/details/mvcpro4

不起作用,当它获取控制器 用户名 参数为空时。

我如何配置publicview路由,因此不会破坏默认路由。

我有这些路线。

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

            routes.MapRoute(
                "publicview",
                "publicview/details",
                new { controller = "publicview", action = "details" }
            );

            routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "api/{controller}/{action}/{id}",
                defaults: new { id = RouteParameter.Optional }
            );

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

1 个答案:

答案 0 :(得分:1)

就像你已经

一样
routes.MapRoute(
            "publicview",
            "publicview/details/{userName}",
            new { controller = "publicview", action = "details", userName=UrlParamter.Optional }
        );

确保在详细信息操作中调用字符串参数userName,以便填充。

或者您可以删除上述路线并在详细信息操作中将参数更改为id,以便它使用标准路线

小心url中的特殊字符,或.net运行时将启动并向您抛出异常。

http://blogs.iis.net/nazim/archive/2011/04/18/use-of-special-characters-like-in-an-iis-url.aspx