3

初めての MVC4 Web サイトを作成しています。ページが正常に送信されたときに成功メッセージを表示したいと考えています。使用して達成しました ModelState.AddModelError(("", "Data successfully saved.");が、赤色で表示されています。いくつかの条件に基づいて、実行時に異なる css を適用したいと考えています。

ありがとう。

4

3 に答える 3

0

フォン、私もあなたの答えに感謝しますが、あなたが質問に対する答えを提供していないという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
于 2014-02-18T01:00:36.310 に答える
0

通常、アクション メソッドの結果が成功すると、リダイレクトが発生します。特に、結果が 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" : "" })
于 2013-03-20T12:05:04.550 に答える