0

@Html.DropdownListFor に @size を指定すると、jquery .submit がサーバーと通信できなくなるという、MVC の html ヘルパーに関するこの奇妙な問題があります。これを引き起こしている可能性のあるものについてのアイデアはありますか? ドロップダウンを高くするために使用できる代替手段はありますか? コードは次のとおりです。

           @using (Ajax.BeginForm("CreateInProgress", "Audit", new AjaxOptions {     
HttpMethod = "POST", OnSuccess = "CreateInProgressSuccess" }, new { id = "CreateInProgressMainForm"}))
           {
              <div id="reqTabContentBox" class="formPageContainer">
                  @Html.HiddenFor(x => x.ConfigDoc.CreateApproveButton.ConfigurableLabelDesc)
                  @Html.HiddenFor(x => x.ConfigDoc.CreateDisapproveButton.ConfigurableLabelDesc)
                  @Html.HiddenFor(x => x.ConfigDoc.CreateSaveButton.ConfigurableLabelDesc)
                  @Html.HiddenFor(x => x.ConfigDoc.CreateAdvanceButton.ConfigurableLabelDesc)

                  @Html.Partial("_CreateAudit")
               </div>
                       @Html.DropDownListFor(x => x.AuditDoc.AuditTemplateId, new SelectList(Model.AuditDoc.AuditTemplates, "Id", "Name"), new { size = "6", @class = "left" })
              <div id="finalButtons" class="formPageContainer">
                 <input id="AdvanceDirection" name="AuditDoc.AdvanceDirection" type="hidden" value="Forward" />

                  <span class="field-validation-error" id="CreateFormValidation"></span>  
                  <span class="field-validation-success" id="CreateSaveSuccess"></span> 
                  @if(Model.AuditDoc.CurrentStates.StateName == "Active")
                  {
                    <div class="btnContainer">
                       <input type="button" id="SaveCreateInProgress" class="toggleAllSelectors" value="@Model.ConfigDoc.CreateSaveButton.ConfigurableLabelDesc" />
                       <input type="button" id="AdvanceCreateInProgress" class="toggleAllSelectors" value="@Model.ConfigDoc.CreateAdvanceButton.ConfigurableLabelDesc" /> 
                    </div>
                  }
                  else
                  {
                    <label>@Model.ConfigDoc.AllEnterPrivateCommentLabel.ConfigurableLabelDesc</label> @Html.TextAreaFor(x => x.AuditDoc.PrivateComment, 0, 0, false)

                    <div class="btnContainer">
                       <input type="button" id="DisapproveCreateInProgress" class="toggleAllSelectors" value="@Model.ConfigDoc.CreateDisapproveButton.ConfigurableLabelDesc" @Model.OwnerApprovalAttribute />
                       <input type="button" id="ApproveCreateInProgress" class="toggleAllSelectors" value="@Model.ConfigDoc.CreateApproveButton.ConfigurableLabelDesc" @Model.OwnerApprovalAttribute />
                    </div>
                  }
               </div>
           }

そして、ここにjqueryサブミットがあります:

$("#CreateAuditMainForm").submit();

Html dropdownlistfor ヘルパー用に生成されたコードは次のとおりです。

<select class="left valid" data-val="true" data-val-number="The field AuditTemplateId must be a number." data-val-required="The AuditTemplateId field is required." id="AuditDoc_AuditTemplateId" name="AuditDoc.AuditTemplateId" size="6" style="display: block; "> ... </select>

助けや知恵の言葉をいただければ幸いです!

4

1 に答える 1

0

これが問題の原因であるかどうかはわかりませんが、「選択」フィールドに表示されるHTMLによって、閉じられていません。おそらくこれはDOM構造を台無しにしており、jqueryでフォームを送信するときにエラーが発生します。HTMLを編集して選択フィールドを閉じ、送信を再試行して何が起こるかを確認してください。

<select class="left valid" data-val="true" data-val-number="The field AuditTemplateId must be a number." data-val-required="The AuditTemplateId field is required." id="AuditDoc_AuditTemplateId" name="AuditDoc.AuditTemplateId" size="6" style="display: block; " />

幸運な推測ができるかどうか見てみましょう。:P

よろしく。

于 2012-10-31T13:45:00.557 に答える