3

ここで同様の質問をします。現在の 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現在のURLを取得して新しいパラメータを追加する他の方法はありますか?

4

1 に答える 1

3

コレクションを反復する必要はありません...パラメータをリクエストの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));
    }
于 2012-04-24T16:18:58.793 に答える