Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 4 控制器的特定路由_Asp.net Mvc 4_Asp.net Mvc Routing - Fatal编程技术网

Asp.net mvc 4 控制器的特定路由

Asp.net mvc 4 控制器的特定路由,asp.net-mvc-4,asp.net-mvc-routing,Asp.net Mvc 4,Asp.net Mvc Routing,我有这个网址: http://localhost:3256/publicview/details?username=mvcpro4 http://localhost:3256/publicview/details/mvcpro4 它工作并返回包含数据的视图 我想将其作为此url: http://localhost:3256/publicview/details?username=mvcpro4 http://localhost:3256/publicview/details/mvcpro4

我有这个网址:

http://localhost:3256/publicview/details?username=mvcpro4
http://localhost:3256/publicview/details/mvcpro4
它工作并返回包含数据的视图

我想将其作为此url:

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 }
            );
        }

就像你已经做过的一样

routes.MapRoute(
            "publicview",
            "publicview/details/{userName}",
            new { controller = "publicview", action = "details", userName=UrlParamter.Optional }
        );
确保在详细信息操作中调用字符串参数userName,以便填充它

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

注意url中的特殊字符,否则.net运行时将启动并向您抛出异常