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 に答える