[解決済み】ASP.NET MVC Html.ValidationSummary(true) でモデルエラーが表示されない。
2022-04-16 09:34:36
質問
Html.ValidationSummaryで問題があります。ValidationSummaryにプロパティ・エラーを表示したくありません。また、Html.ValidationSummary(true)を設定すると、ModelStateからのエラーメッセージが表示されません。文字列に対するコントローラアクションでExceptionが発生した場合
MembersManager.RegisterMember(member);
catchセクションは、ModelStateにエラーを追加します。
ModelState.AddModelError("error", ex.Message);
しかし、ValidationSummaryはこのエラーメッセージを表示しません。Html.ValidationSummary(false)を設定すると、すべてのメッセージが表示されますが、プロパティエラーは表示したくありません。どうしたらいいでしょうか?
以下は、私が使用しているコードです。
モデル
public class Member
{
[Required(ErrorMessage = "*")]
[DisplayName("Login:")]
public string Login { get; set; }
[Required(ErrorMessage = "*")]
[DataType(DataType.Password)]
[DisplayName("Password:")]
public string Password { get; set; }
[Required(ErrorMessage = "*")]
[DataType(DataType.Password)]
[DisplayName("Confirm Password:")]
public string ConfirmPassword { get; set; }
}
コントローラーです。
[HttpPost]
public ActionResult Register(Member member)
{
try
{
if (!ModelState.IsValid)
return View();
MembersManager.RegisterMember(member);
}
catch (Exception ex)
{
ModelState.AddModelError("error", ex.Message);
return View(member);
}
}
表示します。
<% using (Html.BeginForm("Register", "Members", FormMethod.Post,
new { enctype = "multipart/form-data" })) {%>
<p>
<%= Html.LabelFor(model => model.Login)%>
<%= Html.TextBoxFor(model => model.Login)%>
<%= Html.ValidationMessageFor(model => model.Login)%>
</p>
<p>
<%= Html.LabelFor(model => model.Password)%>
<%= Html.PasswordFor(model => model.Password)%>
<%= Html.ValidationMessageFor(model => model.Password)%>
</p>
<p>
<%= Html.LabelFor(model => model.ConfirmPassword)%>
<%= Html.PasswordFor(model => model.ConfirmPassword)%>
<%= Html.ValidationMessageFor(model => model.ConfirmPassword)%>
</p>
<div>
<input type="submit" value="Create" />
</div>
<%= Html.ValidationSummary(true)%>
<% } %>
解決方法は?
ValidationSummaryフラグが機能する方法は、ModelErrorsを表示するのは
string.empty
をキーにしています。それ以外の場合は、プロパティエラーと判断されます。追加したカスタムエラーはキーが'error'なので、ValidationSummary(true)を呼んでも表示されないでしょう。このように、空のキーを持つカスタムエラーメッセージを追加する必要があります。
ModelState.AddModelError(string.Empty, ex.Message);
関連
-
[解決済み] MVC 3 - 辞書に渡されたモデル項目の型は 'System.Collections.Generic.List`1 です。
-
[解決済み] ファイルアップロード ASP.NET MVC 3.0
-
[解決済み] ASP.NET MVC Frameworkで複数のサブミットボタンを処理する方法は?
-
[解決済み] ASP.NET MVCでenumからドロップダウンリストを作成するにはどうすればよいですか?
-
[解決済み] ASP.NET MVC - カスタムIIdentityまたはIPrincipalの設定
-
[解決済み] ASP.NET MVCでビューをコンパイルする
-
[解決済み] ASP.Net MVCのmodelStateからすべてのエラーを取得する方法は?
-
[解決済み】ASP.NET MVCのルートをサブドメインに基づいて作成することは可能ですか?
-
[解決済み] MVCのHTMLヘルパーで生成されたHTML要素にclass属性を追加するにはどうすればよいですか?
-
[解決済み] HTMLヘルパーでURLを生成する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] HTTPヘッダを送信した後、サーバーがステータスを設定できない IIS7.5
-
[解決済み] GET リクエストを許可するには、JsonRequestBehavior を AllowGet に設定します。
-
[解決済み] MVC 3 - 辞書に渡されたモデル項目の型は 'System.Collections.Generic.List`1 です。
-
[解決済み] Html.ActionLinkをリンクではなく、ボタンや画像にする
-
[解決済み】Html5 data-* with asp.net mvc TextboxFor html attributes
-
[解決済み] [Solved] ASP.NET MVCでアクションの絶対URLを見つけるにはどうすればよいですか?
-
[解決済み】Java Server Faces 2.0の主なデメリットは何ですか?
-
[解決済み] [Solved] ModelState.AddModelError - プロパティ用でないエラーを追加するにはどうすればよいですか?
-
[解決済み] Razorを使ってエンコードされていないJsonをViewに書き込むにはどうしたらいいですか?
-
[解決済み] ASP.NET MVC 1でHttpContextBaseからHttpContextオブジェクトを取得するにはどうすればよいですか?