validation - MVC 3 验证 - 仅在失去焦点或提交后显示错误消息?

标签 validation asp.net-mvc-3 jquery-validate data-annotations

我已经在我的 MVC 3 应用程序中使用 DataAnnotations(必需、字符串长度等)设置了实体,并且 MVC 页面正确显示了验证错误消息。但是,在用户有机会输入无效值之前,一旦页面加载到新表单上,就会显示错误消息。

我在几年前使用过 JQuery 验证,并且只能在用户失去对某个字段的关注或试图提交表单后显示错误消息。事实上,我认为这是默认行为。

有没有在 MVC 3 中使用 DataAnnotations 做同样的事情?

编辑:这是 HTML

<div class="form horizontal floated w50p">
<h3>Billing Information</h3>
@using(Html.BeginForm()){
    <div class="item">
        <div class="label">
            <label>* First Name</label></div>
        <div class="value">@Html.TextBoxFor(x => x.Name)</div>
        <div class="value">@Html.ValidationMessageFor(x => x.Name)</div>
    </div>
    <div class="item">
        <div class="label">
            <label>* Address 1</label></div>
        <div class="value">@Html.TextBoxFor(x => x.Street1)</div>
        <div class="value">@Html.ValidationMessageFor(x => x.Street1)</div>
    </div>
    <div class="item">
        <div class="label">
            <label>Address 2</label></div>
        <div class="value">@Html.TextBoxFor(x => x.Street2)</div>
    </div>
    <div class="item">
        <div class="label">
            <label>Address 3</label></div>
        <div class="value">@Html.TextBoxFor(x => x.Street3)</div>
    </div>
    <div class="item">
        <div class="label">
            <label>City</label></div>
        <div class="value">@Html.TextBoxFor(x => x.City)</div>
        <div class="value">@Html.ValidationMessageFor(x => x.City)</div>
    </div>
    <div class="item">
        <div class="label">
            <label>State/Province/Region</label></div>
        <div class="value">@Html.TextBoxFor(x => x.StateProv)</div>
        <div class="value">@Html.ValidationMessageFor(x => x.StateProv)</div>
    </div>
    <div class="item">
        <div class="label">
            <label>Zip / Postal Code</label></div>
        <div class="value">@Html.TextBoxFor(x => x.PostalCode)</div>
        <div class="value">@Html.ValidationMessageFor(x => x.PostalCode)</div>
    </div>
    <div class="item">
        <div class="label">
            <label>* Contact Phone</label></div>
        <div class="value">@Html.TextBoxFor(x => x.ContactPhone)</div>
        <div class="value">@Html.ValidationMessageFor(x => x.ContactPhone)</div>
    </div>        <input type="submit" value="Submit" />
}

最佳答案

默认行为正是您所描述的(只有在字段失去焦点或提交表单后才会出现错误)。因此,您的 View 或 Controller 一定有问题。具体来说,听起来验证器认为用户甚至在表单的第一个 View 上都在回发。表单的第一个 View 应该是 GET 而不是 POST。如果您粘贴您的 Controller 代码,这可能有助于我们更好地对其进行诊断。

关于validation - MVC 3 验证 - 仅在失去焦点或提交后显示错误消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6051253/

相关文章:

JQuery 验证下拉列表

javascript - 有谁知道任何基于人的 JavaScript/jQuery 源代码审计网站/论坛/社区?

java - @Valid 和自定义验证注释 - 何时进行验证?

xcode - 始终将 “Network connection was lost”作为验证问题

JavaScript 和错误 "end tag for element which is not open"

asp.net-mvc - 新的MVC项目

javascript - 在文本字段中键入时设置文本格式

jquery - MVC 3部分 View 验证问题

c# - Master-Detail 使用 Razor、ASP.NET MVC 3 和 .NET 4.0 创建 View

Jquery 验证 + 全局化 + 应用于所有数字字段,而不仅仅是所需的字段