ASP.NET MVCページにかなり複雑なフォームがあります。これは次のように動作します...ASP.NET MVC複数の順次ポスト - データがポピュレートされない
デフォルトでは(HTTPポストなし)、モデルにバインドされた2つの選択ボックスと送信ボタンがあります。
送信時(HTTP投稿)、選択ボックスの値を使用して、DBからデータを取得します。そのデータが投稿されたモデルインスタンスに追加され、インスタンスが別のView(myModelInstance)呼び出しを発行するために使用されます。
この時点では、見栄えがよくなります。私の選択ボックスは選択した値を保持し、DBデータに基づく新しい要素が表示されます。
データを変更するかどうかにかかわらず、別の投稿を行うと、選択ボックスで選択された元の値は、コントローラのActionメソッド内でnullになりますが、DBデータテキストボックスの値は異なります。
私は本当に、次の例のように... IEnumerableを内にある私のモデルの部品を編集できるようにカミソリ内のインデックス表記を使用している、ここで特別なやっているだけの事...
@for (int i = 0; i < ViewBag.SomeArbitraryNumber; i++)
{
<input type="text" name="myModel.MyEnumerable[@i].MyValue"
value="@(Model.MyEnumerable[i].MyValue)" size="2" />
}
この索引表記は、元の選択ボックスの値が転記された後にのみ使用されます。
更新日: ここの主な貢献者は特別なインデックス表記です。私はそれを排除すれば、それは正常に動作します。また、2つの選択ボックスに一致する追加の隠しフィールドを追加し、それらのインデックス付き表記を使用すると、2番目の投稿が機能します。
ええ、私は標準ViewとHttpPostビューの両方にそれらを設定しています。私は、値がそこにあることをソースで見ることもできます。彼らはちょうど2番目のポストのモデルに水和されていないようです。 – ctorx