6

redirecttoactionビューのリファラー ページ (グリッドのステータス) から抽出されたさまざまなパラメーターを使用して、asp.net mvc ビューで呼び出しを行う必要があります。

(非表示フィールドに) クエリ文字列の内容 (空の場合もあれば、2 つのパラメーターがある場合もあります) があるため、ルート値配列を作成するのに問題があります。

クエリ文字列をルート値配列に変換するのに役立つヘルパーはありますか? 何かのようなもの:

string querystring ="sortdir=asc&pag=5";
return RedirectToAction( "Index", ConvertToRouteArray(querystring));
4

2 に答える 2

10

一般的なソリューションを作成するには、クエリ文字列をディクショナリに変換し、ディクショナリを RouteValueDictionary に変換します。

var parsed = HttpUtility.ParseQueryString(temp); 
Dictionary<string,object> querystringDic = parsed.AllKeys
    .ToDictionary(k => k, k => (object)parsed[k]); 

return RedirectToAction("Index", new RouteValueDictionary(querystringDic)); 
于 2012-08-29T14:38:12.177 に答える
2

使用上の制限の 1 つRedirectToAction("actionName", {object with properties})は、 RedirectToAction() には を受け入れるオーバーロードがないRedirectToAction(ActionResult(), {object with properties})ため、アクション名 (および場合によってはコントローラー名) にマジック文字列を使用する必要があることです。

T4MVC ライブラリを使用する場合、2 つの流暢な API ヘルパー メソッド (AddRouteValue(...)およびAddRouteValues(...)) が含まれており、単一のクエリ文字列パラメーター、オブジェクトのすべてのプロパティ、または Request.QueryString 全体を簡単に追加できます。これらのメソッドは、T4MVC 独自の ActionResult オブジェクトで呼び出すか、RedirectToAction() メソッドで直接呼び出すことができます。もちろん、T4MVC は魔法の文字列を取り除くことがすべてです!

例として、認証されていないリクエストのログイン ページにリダイレクトし、最初にリクエストされた URL をクエリ文字列パラメーターとして渡し、ログインが成功した後にそこにジャンプできるようにしたいとします。次の構文例のいずれかが機能します。

return RedirectToAction(MVC.Account.LogOn()).AddRouteValue(@"returnUrl", HttpUtility.UrlEncode(Request.RawUrl));

また

return RedirectToAction(MVC.Account.LogOn().AddRouteValue(@"returnUrl", HttpUtility.UrlEncode(Request.RawUrl)));
于 2013-01-10T20:10:03.113 に答える