私は多かれ少なかれこのように見える2つのコレクションを持っています:
[BindProperty]
public List<MyObject> MyObjects { get; set; } = new List<MyObject>();
[BindProperty]
public List<MyOtherObject> MyOtherObjects { get; set; } = new List<MyOtherObject>();
したがって、それらはサーバーにバインドされていますが、クライアントにバインドする方法がよくわかりません。または私はそれを間違っているだけです。ページが読み込まれると、リストはHTMLテーブルに追加されますが、直接バインドはありません。
@foreach (var item in Model.MyObjects)
{
<tr>
<td>
Title
</td>
<td>
@Html.DisplayFor(m => item.Property)
</td>
</tr>
}
問題は、異なるポイントで各リストにアイテムを追加するためにサーバーにPOSTする必要があることです。そして、私がそれをするとき、私はただreturn Page();
。この時点ではデータベースに何も保存されておらず、フォームが完成していないため、リダイレクトしていません。
私の現在の知識から、2つのオプションがあると思います。クエリ文字列でデータをリダイレクトして渡すか、データをCookieに保存して、POSTごとに再入力します。
どちらも素晴らしい選択肢ではありません。これを行うためのより良い方法はありますか?
モデルバインディングは、フォーム値を処理するように設計されています。サーバー上の永続データからコレクションを再作成しない場合は、モデルバインディングを機能させるために、各アイテムにフォームフィールドを追加する必要があります。複数ステップのウィザードのようなフォームを作成する場合、通常、各ステップの未保存の値を、あるステップから次のステップまで非表示フィールドに保持します。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加