0

選択リストがあるとします:

<select multiple="multiple" name="Options.Id">
  <option value="value1">Option 1</option>
  <option value="value2">Option 2</option>
  <option value="value3">Option 3</option>
  <option value="value4">Option 4</option>
  <option value="value5">Option 5</option>
</select>

サーバーにフォーム送信されると、データは次の形式になります。

Options.Id=value1&Options.Id=value4&Options.Id=value5

オプション 1、4、および 5 を選択した場合。

デフォルトのモデル バインダーは、これを次のタイプのオブジェクトのリストにバインドできません。

class MyData 
{
  String Id { get; set; }
  ...
}

選択リストの名前がオプションで、文字列のリストにバインドすると機能します。デフォルトのモデル バインダーは、Options というオブジェクトのメンバーである「Id」という文字列のリストにバインドする必要があると思います。これにはデフォルトのモデル バインダーが必要なように見えますか?

4

1 に答える 1

0

オブジェクトの配列にバインドしたい場合、通常、サーバー側の配列にバインドするには、クライアント側にフィールドの配列が必要です (詳細については、http: //www.hanselman.com/blogを参照してください)。 /ASPNETWireFormatForModelBindingToArraysListsCollectionsDictionaries.aspx )。サーバー側で単一の複数選択フィールドから複数のオブジェクトにバインドするには、カスタム モデル バインダーを作成する必要があると思います。

于 2012-04-12T12:04:15.730 に答える