ValidationSummary显示不在页面中的字段

时间:2013-02-28 08:51:20

标签: .net asp.net-mvc

我根据用户模型创建了一个登录页面,除了用户名和密码(例如电子邮件地址)之外,用户还有其他必填字段,但我只显示用于登录的用户名和密码。

问题在于,如果我将用户名和/或密码留空,则ModelState会获取Model类中所有字段的错误消息,从而导致误导性验证消息。

视图的代码是:

<div class="form-login">
@using (Html.BeginForm())
{
    <h2 class="form-signin-title">Login</h2>
    <div class="editor-label">
        @Html.LabelFor(model => model.Username)
    </div>
    <div class="editor-field">
        @Html.EditorFor(model => model.Username)
        @Html.ValidationMessageFor(model => model.Username)
    </div>

    <div class="editor-label">
        @Html.LabelFor(model => model.Password)
    </div>
    <div class="editor-field">
        @Html.PasswordFor(model => model.Password)
        @Html.ValidationMessageFor(model => model.Password)
    </div>
    <button class="btn btn-medium btn-primary" type="submit">Login</button>
}

验证摘要是_Layout的一部分,仅在模型无效时才会显示。

有没有办法可以在屏幕上显示控件的验证摘要?

1 个答案:

答案 0 :(得分:1)

验证错误消息显示,因为asp.net MVC验证验证了视图模型。因此,如果在视图中显示字段,则无关紧要,因为整个模型已经过验证。您应该为此表单使用专用视图模型,该模型仅包含显示的字段。