2

我有一个简单的设置,但无法弄清楚为什么这不起作用。这是我设置的:

  • 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; }
    }
4

1 回答 1

0

好吧,事实证明这是我的错。感谢您的回复。似乎另一个深埋的脚本在第一次尝试后杀死了我的表单提交。删除它解决了这个问题。不过再次感谢。

于 2012-10-22T12:27:58.977 回答