路由配置修剪 get 请求中的所有参数
Route config trims all the params in the get request
我在 MVC 项目中有一个路由配置:
routes.MapRoute(
name: "Client",
url: "Client/{webUi}/{lang}/{*controllerUrl}",
defaults: new
{
controller = "Client",
action = "Index",
lang = "en-GB"
}
);
我有一个带有方法 Index() 的 ClientController。
public ActionResult Index(string webUi, string lang, string controllerUrl)
{ ... }
我正在尝试使用 URL:
Client/ZWS/{lang}/ImportBundles?from=bundle
但是,当我调试 ClientController 时,我发现 controllerUrl 中的值是 ImportBundles。 from=bundle 的参数只是被剥离了。
是否可以实现?
提前致谢!
编辑:
我刚刚尝试使用这个 URL:
Client/ZWS/{lang}/ImportBundles/from/bundle
它奏效了。但是是否可以使用这种格式:
Client/ZWS/{lang}/ImportBundles?from=bundle
不完全是,但是您可以通过访问 Request.QueryString
.
来访问 Action 中 ?
之后的所有内容
Request.QueryString["from"] //would evaulate to "bundle"
您不需要在路由定义中使用 * 来执行此操作。如果你的格式总是Client/ZWS/{lang}/ImportBundles?from=bundle
,你可以在路由定义的最后去掉它
...
url: "Client/{webUi}/{lang}/{controllerUrl}",
和 controllerUrl
仍将计算为 "ImportBundles"
我在 MVC 项目中有一个路由配置:
routes.MapRoute(
name: "Client",
url: "Client/{webUi}/{lang}/{*controllerUrl}",
defaults: new
{
controller = "Client",
action = "Index",
lang = "en-GB"
}
);
我有一个带有方法 Index() 的 ClientController。
public ActionResult Index(string webUi, string lang, string controllerUrl)
{ ... }
我正在尝试使用 URL:
Client/ZWS/{lang}/ImportBundles?from=bundle
但是,当我调试 ClientController 时,我发现 controllerUrl 中的值是 ImportBundles。 from=bundle 的参数只是被剥离了。
是否可以实现?
提前致谢!
编辑:
我刚刚尝试使用这个 URL:
Client/ZWS/{lang}/ImportBundles/from/bundle
它奏效了。但是是否可以使用这种格式:
Client/ZWS/{lang}/ImportBundles?from=bundle
不完全是,但是您可以通过访问 Request.QueryString
.
?
之后的所有内容
Request.QueryString["from"] //would evaulate to "bundle"
您不需要在路由定义中使用 * 来执行此操作。如果你的格式总是Client/ZWS/{lang}/ImportBundles?from=bundle
,你可以在路由定义的最后去掉它
...
url: "Client/{webUi}/{lang}/{controllerUrl}",
和 controllerUrl
仍将计算为 "ImportBundles"