Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.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 如何从RouteData获取操作信息?_Asp.net Mvc - Fatal编程技术网

Asp.net mvc 如何从RouteData获取操作信息?

Asp.net mvc 如何从RouteData获取操作信息?,asp.net-mvc,Asp.net Mvc,我使用以下代码从RoutedData获取控制器/操作信息 RouteData route = RouteTable.Routes.GetRouteData(httpContext); string controller = route.GetRequiredString("controller"); string action = route.GetRequiredString("action"); 但是,如果Global.asax.cs中的路线图没有包含“controller”的部分,我是否

我使用以下代码从RoutedData获取控制器/操作信息

RouteData route = RouteTable.Routes.GetRouteData(httpContext);
string controller = route.GetRequiredString("controller");
string action = route.GetRequiredString("action");
但是,如果Global.asax.cs中的路线图没有包含“controller”的部分,我是否应该更改字符串“controller”,如下所示:

            routes.MapRoute(
            "Default",                                              // Route name
            "{NOTCONTROLLER}/{action}/{id}",                           // URL with parameters
            new { controller = "Home", action = "Index", id = "" }  // Parameter defaults
        );

谢谢

否。您的路线数据将始终具有“控制器”键。如果您查看路线:

routes.MapRoute(
   "Default",                         // Route name
    "{NOTCONTROLLER}/{action}/{id}",  // URL with parameters
    new { controller = "Home", action = "Index", id = "" }  // Parameter defaults
);
RouteTable.Routes.GetRouteData返回的内容来自
controller=“Home”
,而不是来自
“{NOTCONTROLLER}/{action}/{id}”
。注册路由时,大括号中的任何内容都会映射到操作中具有相同名称的参数,除了指定控制器或动态操作的
{controller}
{action}
之外。更详细地阅读MVC路由


要了解路线并了解它们的工作原理,请尝试一下。如果您陷入无法确定路线工作原理的困境,这将是非常宝贵的。

谢谢,我非常感谢!