セットアップは簡単ですが、なぜこれが機能しないのか理解できません。これが私が設定したものです:
- 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; }
}