asp.net MVC アプリケーションには、フォームを送信したときに値に問題がある (検証が失敗した) 場合に、古い値を維持してフォームが表示されるメカニズムがあります。それはどのように起こりますか?これらの値はどこに保持されますか? または FormCollection から収集しました。
ヘルプが適用されます。
よろしくパーミンダー
asp.net MVC アプリケーションには、フォームを送信したときに値に問題がある (検証が失敗した) 場合に、古い値を維持してフォームが表示されるメカニズムがあります。それはどのように起こりますか?これらの値はどこに保持されますか? または FormCollection から収集しました。
ヘルプが適用されます。
よろしくパーミンダー
ASP.NET MVC は複数の場所で値を検索するため、コントローラー アクションとビューの設定方法に大きく依存します。
FormCollection はコントローラの Action がパラメータとして取り込むものであり、値が実際に表示される View とは完全に分離されているため、FormCollection を使用するという仮定は間違っています。
1.0 では、デフォルトで、ビューの編集テンプレートは、次のように、ほとんどの HtmlHelpers で 2 番目のパラメーターを使用します。
<%=Html.Textbox("Title", Model.ID)%>
これにより、バインドされたモデル オブジェクトから古い値が取得されます。したがって、検証に明示的に失敗して View(object) を返す場合、値はそのオブジェクトから取得されます。それでも、次のように明示的に検証に失敗している場合:
if (ModelState.IsValid == false)
{
return View();
}
モデルがバインドされていないため、HtmlHelper コードでエラーが発生する可能性があります。
次のように、2 番目のパラメーターを完全に省略した場合:
<%=Html.Textbox("Title")%>
値は投稿 (Request.Form) 値から取得されます。
それを行う 1 つの方法は、ModelState.AddModelErrorを使用することです。
MVC エラー処理に関する優れたチュートリアルは、ここにあります。
データを含むビューを返すことでそれを行うことができます
if (ModelState.IsValid == false)
{
return View(X);
}
X は、返す必要があるデータです