我有一个简单的设置,但无法弄清楚为什么这不起作用。这是我设置的:
- MVC4
- 启用 Html.EnableUnobtrusiveJavaScript() 和 Html.EnableClientValidation()
- 引用了 jQuery 1.6.2、jquery.validate.min.js 和 jquery.validate.unobtrusive.min.js
- 没有事件绑定到表单或按钮提交
问题是,它似乎在客户端工作,我可以在其中提交表单并显示适当的验证错误。但是,当我正确填写表单并点击提交时,它什么也不做,我之前的最后一条错误消息仍然显示。如果我返回并清除字段,验证似乎仍在工作(验证摘要已适当更新)。如果我第一次提交并正确输入了所有字段,它就可以正常工作。只有当我第一次出现错误时,它才能再次提交。
该模型仅在名字、姓氏和电子邮件中具有 [必需]。没有其他属性。此外,FormFieldFor 只是 EditorFor() 的包装器。
代码如下。有任何想法吗?谢谢。
@model AscendOne.CareOne.Mvc.Models.ResourceGuideUserModel
@*Form*@
<form id="guide-download-submit" method="get" action="/leads/" target="_blank">
@{
Html.EnableUnobtrusiveJavaScript();
Html.EnableClientValidation();
}
@Html.ValidationSummary()
@if (Model.CampaignID != null)
{<input type="hidden" name="CampaignID" value="@Model.CampaignID" />}
@if (!String.IsNullOrWhiteSpace(Model.PDFUrl))
{<input type="hidden" name="RedirectUrl" value="@Model.PDFUrl" />}
<fieldset>
@Html.FormFieldFor(m => m.FirstName)
@Html.FormFieldFor(m => m.LastName)
@Html.FormFieldFor(m => m.Email)
</fieldset>
<button type="submit">Download The Guide</button>
</form>
public class ResourceGuideUserModel
{
public string CampaignID { get; set; }
public string PDFUrl { get; set; }
[Required]
[DisplayName("First Name:*")]
public string FirstName { get; set; }
[Required]
[DisplayName("Last Name:*")]
public string LastName { get; set; }
[Required]
[DisplayName("Email Address:*")]
public string Email { get; set; }
}