路由配置修剪 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 的参数只是被剥离了。

是否可以实现?

提前致谢!

编辑:

  1. 我刚刚尝试使用这个 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"