2017-09-18 4 views
0

BeginCollectionItemとpartialviewを使用してItems(modelview)を動的に作成または削除するビューがあります。動的に作成されたビューの検証は起動しません。 コード: MAINVIEW:動的に作成されたPartialViewsを使用すると検証が機能しませんmvc5

​​

PartialView:

@model EnquiryLineItemVM 

<div class="editorRow"> 
    @using (Html.BeginCollectionItem("ItemList")) 
    { 
     <table class="table"> 

      @Html.ValidationSummary(true, "", new { @class = "text-danger" }) 

      <tr> 
       <td> 
        @Html.EditorFor(model => model.ItemDesc) 
        @Html.ValidationMessageFor(model => model.ItemDesc, "", new { @class = "text-danger" }) 
       </td> 
       <td> 
        @Html.EditorFor(model => model.Quantity) 
        @Html.ValidationMessageFor(model => model.Quantity, "", new { @class = "text-danger" }) 
       </td> 

       <td> 
        @Html.DropDownListFor(model => model.ManufacturerId, Model.ManufacturerList, "--Please Select--") 
        @Html.ValidationMessageFor(model => model.ManufacturerId, "", new { @class = "text-danger" }) 
       </td> 
       <td> 

        <a href="#" class="deleteRow">Delete</a> 
       </td> 
      </tr> 
     </table> 

    } 
    </div> 

のViewModel:このようなシナリオで検証を使用しています

public class EnquiryLineItemVM 
    { 
     public int ID { get; set; } 
     [Required] 
     public string ItemDesc { get; set; } 
     [Required] 
     public int Quantity { get; set; } 

    } 

同様の質問はここにあるSO1しかし、動作しませんでした。私はビューで控えめな、Jqueryの検証を参照しています。 助けてください。読んでくれてありがとう 。

+0

可能な複製を参照してください。/40539321/a-partial-view-passing-a-collection-html-begincollectionitem-helperを使用して) –

+0

新しい項目のhtmlが追加された後でバリデータを再解析する必要があります。すなわち成功したコールバックで - あなたがリンクしている答え(それはうまくいく)ごとに。あなたの現在は、ページがforstレンダリングされているときにのみ、それは無意味です。 –

+0

また、あなたは[あなたの[前の質問](https://stackoverflow.com/questions/46277135/using-begincollectionitem-for-adding-deleting-lineitems-in-mvc5-)に記載されているように、 partialview) –

答えて

1

DOMに動的に追加すると、検証で使用される属性が追加されるため、Jqueryの検証が機能しません。この問題を回避するには、ロード後に再びそれを呼び出すことです:

$('#addItem').on('click', function() { 
    $.ajax({ 
     url: '@Url.Action("CreateLineItem")', 
      cache: false, 
      success: function (html) { 
          $("#editorRowsLineitems").append(html); 
          // clear and add validation attributes 
          $("form").removeData("validator"); 
          $("form").removeData("unobtrusiveValidation"); 
          $.validator.unobtrusive.parse("form"); 
         } 
     }); 
     return false; 
    }); 

は(https://stackoverflow.com/questions [Html.BeginCollectionItemヘルパーを使用してコレクションを渡す部分図]のhere

+0

ありがとうございました。私は成功関数の外にバリデータ除去スクリプトを置いていました。それは今働く。 – user2695433

関連する問題