6

我想使用路由将查询字符串添加到 url 的末尾。如何在 Global.asax 中执行此操作?

routes.MapRoute(
    "Detail",
    "{controller}/{action}/{id}/{name}",
    new
    {
        action = "Detail",
        name = UrlParameter.Optional,
        // it is possible to add here query string(s) ?
    },
    new[] { "MyProject.Controllers" }
);

例如,实际的 url 包含:

www.mysite.com/MyController/Detail/4/MyValue

但我想生成类似的东西:

www.mysite.com/MyController/Detail/4/MyValue?ref=test&other=something
4

2 回答 2

8

当您生成操作 URL 时,您可以传入其他路由值,如下所示:

@Url.Action("Detail", "MyController",
    new { id = 4, @ref = "test", other = "something" })

路由的路由模板中未定义的refand参数将作为查询字符串参数附加。otherDetail

于 2013-09-26T09:30:15.413 回答
2

MVC.NET 自动将查询字符串中的参数绑定到控制器操作输入。

您的控制器操作示例如下:

public ActionResult Detail(string id, string name, string test, string other){

}

此外,您可以使用如下代码生成链接:

UrlHelper helper = new UrlHelper(HttpContext.Current.Request.RequestContext);
var url = helper.RouteUrl("Detail", new {id="testid", name="testname", ref="testref", other="testother"});
于 2013-09-26T09:23:55.263 回答