在ASP.NET MVC3中将参数添加到当前URL的最佳方法

时间:2012-04-23 05:50:18

标签: asp.net-mvc asp.net-mvc-3 url url-parameters routevalues

我问了一个类似的问题here,我需要保留当前的URL并为其添加新参数,唯一的答案是(还):

RouteValueDictionary rt = new RouteValueDictionary();
foreach(string item in Request.QueryString.AllKeys)
  rt.Add(item,    Request.QueryString.GetValues(item).FirstOrDefault());

rt.Add("RC", RowCount);
return RedirectToAction("Index", rt);

那么有没有其他方法可以避免重复Request.QueryString并获取当前网址并添加新参数?

1 个答案:

答案 0 :(得分:2)

您不需要迭代集合......您只需将参数附加到请求的RawUrl:

    public ActionResult TestCurrentUrl(string foo)
    {
        var request = ControllerContext.HttpContext.Request;

        if (foo != "bar")
        {
            var url = request.RawUrl;

            if (request.QueryString.Count == 0)
            {
                url += "?foo=bar";
            }
            else
            {
                url += "&foo=bar";
            }

            return Redirect(url);
        }

        return Content(String.Format("Foo: {0}", foo));
    }