6

このように名前が付けられたフォーム内のアイテムのリストがあります...

<input type="text" id="ListItem1" name="ListItem1">
<input type="text" id="ListItem2" name="ListItem2">
<input type="text" id="ListItem3" name="ListItem3">

これらをこの構造のモデルに変換するカスタムモデルバインダーを作成したい...

public class MyModel
{
  public IEnumerable<MyModelItem> Items {get; set;}
}

public class MyModelItem
{
  public int Id { get; set; }
  public string Value { get; set; }
}

したがって、各 ListItem は、入力 ID の末尾の数字と等しい ID と入力フィールドの値に設定された値を持つ MyModelItem に変換する必要があります。

ASP.Net MVC 1.0 では、コレクションを繰り返し処理し、この形式のすべての入力項目を見つけるbindingContext.ValueProvider.Keysためにチェックすることができました。key.StartsWith("ListItem")

ASP.Net MVC 2 の新しい IValueProvider インターフェイスにはキー コレクションがなく、そのインターフェイスを反復処理できません。 ASP.Net MVC 2 で設計時にプレフィックスしか知らないこれらの値にアクセスするにはどうすればよいですか?

4

2 に答える 2

5

フォームの値を反復処理する場合は、Request.Form を使用します。

于 2010-03-29T17:43:48.633 に答える
-1

bindingContext.ModelState.Keysコレクションを使用できますか?

更新 申し訳ありませんが、もう少し明確になっているはずです。つまり、ModelState.Keysコレクションを使用できず、key.StartsWith( "ListItem")を確認し、使用する場合は、そのキーを使用して値プロバイダーから値を取得できます(GetValueメソッドを使用)。

于 2010-03-29T15:23:01.690 に答える