存在表单错误时不显示ASP.NET MVC验证摘要

问题描述

我尝试按照其他答案回答问题,如无济于事。

我的问题是我正在尝试将验证消息重新带到我的剃刀表单中,但是它们没有出现在“验证摘要”部分中。

验证摘要一直在显示,直到我在问题末尾添加CSS为止。控制器中还将ModelState标记为无效,并将dto(模型)返回到视图。

表格:

@model Application.viewmodels.ContactUsviewmodel

@using (Html.BeginForm("SendEmail","Help",FormMethod.Post))
{
    <div class="container">
        <div class="row form-group">
            <div class="col-sm">
                @Html.LabelFor(m => m.Subject)
                @Html.EditorFor(m => m.Subject,new { htmlAttributes = new { @class = "form-control",tabindex = 1 } })
            </div>
        </div>
        <div class="row form-group">
            <div class="col-sm">
                @Html.LabelFor(m => m.Message)
                @Html.EditorFor(m => m.Message,tabindex = 2 } })
            </div>
        </div>
        <div class="row form-group">
            <div class="col-sm">
                <button type="submit" class="button-default-small"><h5 class="buttonText">SEND</h5></button>
            </div>
        </div>
        <div class="row">
            <div class="col-sm">
                @Html.ValidationSummary(false,"Please enter all required information.",new { @class = "text-danger" })
            </div>
        </div>
    </div>
}

查看模型:

public class ContactUsviewmodel
{
    [required]
    public string Message { get; set; }
    [required]
    public string Subject { get; set; }
}

控制器:

[HttpPost]
public ActionResult SendEmail(ContactUsviewmodel dto)
{
        if (!ModelState.IsValid)
        {
            return View("HelpView",dto);
        }

        return RedirectToAction("HelpView");
}

public ActionResult HelpView()
{
    return View();
}

CSS:

.validation-summary-valid {
    display: none;
}

解决方法

包括以下脚本来解决此问题:

    <script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
    <script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>