初めての MVC4 Web サイトを作成しています。ページが正常に送信されたときに成功メッセージを表示したいと考えています。使用して達成しました ModelState.AddModelError(("", "Data successfully saved.");
が、赤色で表示されています。いくつかの条件に基づいて、実行時に異なる css を適用したいと考えています。
ありがとう。
初めての MVC4 Web サイトを作成しています。ページが正常に送信されたときに成功メッセージを表示したいと考えています。使用して達成しました ModelState.AddModelError(("", "Data successfully saved.");
が、赤色で表示されています。いくつかの条件に基づいて、実行時に異なる css を適用したいと考えています。
ありがとう。
フォン、私もあなたの答えに感謝しますが、あなたが質問に対する答えを提供していないというMaxPayneに同意します。IMOの回避策です。私も、ViewBag を使用するという余分な荷物なしで ValidationSummary のスタイルを設定する方法を検討しています。
エラーがない限り、投稿後に同じビューに戻るべきではないことに同意しますが、ViewBag を使用せずに ValidationSummary スタイルを動的に変更したい場合があると思います。
これまでのところ、これは私の唯一のリードですhttp://westcountrydeveloper.wordpress.com/2011/07/06/mvc-validation-part-4-styling-the-validation-controls/
JQuery を使用して、検証応答に基づいて要素の css 属性を変更できると思います。
var valid = $("#formID").validate().element("#ElementID");
//or
var valid = $('#formID').validate();
// Then use $(".ElementClass").css({}); to change the the style
通常、アクション メソッドの結果が成功すると、リダイレクトが発生します。特に、結果が json の結果でない場合は、それが必要な場合があります。しかし、投稿後に同じビューを返している場合は、間違っています。が投稿で有効な場合ModelState
、つまり検証に合格した場合 (たとえば、必須フィールドが提供された場合)、実行してエラー メッセージを追加するとModelState.AddModelError(("", "Data successfully saved.")
、ModelState
無効な状態になります。それがあなたが赤い色をしている理由です。
本当に同じビューを返したいと仮定すると、次のようなものがあると思います。
[HttpPost]
public ActionResult YourActionMethod(YourModel model)
{
// some code goes here
ModelState.AddModelError(("", "Data successfully saved.")
return View(", model);
}
代わりに次のようなものを用意する必要があります。
[HttpPost]
public ActionResult YourActionMethod(YourModel model)
{
// some code goes here
ViewBag.SuccessMessage = "Data successfully saved.";
return View(", model);
}
次に、次のようなビューで:
@Html.ValidationSummary(true)
if (!string.IsNullOrWhiteSpace(ViewBag.SuccessMessage)) {
<div class="success-summary">
<p>@ViewBag.SuccessMessage</p>
</div>
}
if の前に追加する必要はないことに注意してください。そのコードは、 を使用してタグ@
内にあると想定しています。そしてcssの場合:form
@using
.success-summary {
color: #3366FF;
}
実際には、ViewData または ViewBag のいずれかを使用できます。2 つの違いの詳細については、この SO ページにアクセスしてください。
アップデート:
[HttpPost]
public ActionResult YourActionMethod(YourModel model)
{
//
If (ModelState.IsValid) {
@ViewBag.IsModelValid = true;
ModelState.AddModelError("", "Data successfully saved.");
return View(model);
}
ViewBag.SuccessMessage = "Data successfully saved.";
return View(", model);
}
あなたの見解:
@Html.ValidationSummary(false, "", new { @class= (ViewBag.IsModelValid!=null && ViewBag.IsModelValid) ? "success-summary" : "" })