我已经在我的 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/