12

Url.Action のクエリ文字列で渡す必要がある文字列の配列があります。

Url.Action("Index", "Resource", new { FormatIds = Model.FormatIDs})

現在、リンクはクエリ文字列ではなく System.String[] としてブラウザに表示されています。モデルバインディングでMVCにこれを自動的に行わせることは可能ですか?

次のようなコントローラーアクションとバインドする必要があります。

public ActionResult Index(string[] formatIDs)
4

3 に答える 3

10

デフォルトのバインダーを使用して自動的にバインドする文字列のリストを取得するには、次のように指定する必要があります。

name=value&name=value2&name=value3

したがって、リストを次のように変換する必要があります。

Index?formatIDs=1&formatIDs=2&formatIDs=3
于 2012-12-14T23:28:02.397 に答える
8

デフォルトのモデル バインダーを使用するには、次のような結果になるはずです。

Index?formatIDs=value1&formatIDs=value2&formatIDs=value3

ParseQueryString ユーティリティを使用して NameValueCollection であるとドキュメントに記載されていても、HttpValueCollection という名前のプライベート コレクションを返すことができます。次に、キーを手動で追加します。HttpValueCollection がエンコードを行います。そして、手動で QueryString を追加するだけです:

var qs = HttpUtility.ParseQueryString(""); 
new string[] { "value1", "value2", "value3" }.ToList().ForEach(x => qs.Add("formatIDs", x));

Url.Action("Index", "Resource")?@qs
于 2013-03-27T23:19:04.637 に答える