0

奇妙な問題があります。

Razorでダイナミックな形を作っています。動的に追加された入力を保存するために辞書を使用しています。私はそのようなコードを生成します:

<input type="hidden" value="96" name="Inputs[0].Key">
<input type="text" name="Inputs[0].Value">

これをコントローラーで受け取りますdictionary。いつも私が追加した要素と同じ数の要素がありますが、それらはすべて空です。

これは私のモデルの一部です:

public class MetriceModelTaskSchedule
{
     public IEnumerable<KeyValuePair<long, string>> Inputs { get; set; }
}

ここで何が間違っている可能性がありますか?

4

1 に答える 1

2

ここで何が間違っている可能性がありますか?

KeyValuePair<TKey, TValue>クラスに読み取り専用のプロパティKeyとプロパティがあるという事実。Valueモデルバインダーが単に値を設定できないことを意味するセッターがありません。

したがって、いつものように、ビューモデルを定義することから始めます。

public class InputViewModel
{
    public long Key { get; set; }
    public string Value { get; set; }
}

その後:

public class MetriceModelTaskSchedule
{
    public IEnumerable<InputViewModel> Inputs { get; set; }
}

または、辞書を使用することもできます。

public class MetriceModelTaskSchedule
{
    public IDictionary<long, string> Inputs { get; set; }
}

standard naming conventionまた、モデルバインダーが入力フィールドをモデルに正常にバインドできるように、ビューの入力フィールドが尊重されていることを確認してください。

<div>
    <input type="text" name="Inputs[0].Key" value="1" />
    <input type="text" name="Inputs[0].Value" value="value 1" />
</div>
<div>
    <input type="text" name="Inputs[1].Key" value="2" />
    <input type="text" name="Inputs[1].Value" value="value 2" />
</div>
...
于 2013-02-18T15:27:00.253 に答える