0

MVC5의 부분보기에서 대량 데이터를 삽입하는 데 문제가 있습니다. 부분보기가 아닐 때 완전히 작동합니다. 나는이 예제를 사용하고 있습니다 : http://www.dotnetawesome.com/2014/08/how-to-insert-multiple-record-to-database-at-a-time-aspnet-mvc4.html 이 컨트롤러에서 원래 코드 :C# MVC5 부분보기에서 BulkData 삽입이 작동하지 않습니다.

public ActionResult BulkData() 
    { 
      // This is only for show by default one row for insert data to the database 
      List<ContactInfo> ci = new List<ContactInfo> {new ContactInfo{ ID = 0, ContactName = "", ContactNo=""} }; 
      return View(ci); 
    } 

(내가 bootrap 모달 팝업의 기능을 사용하기 원하기 때문에) 내가로 변경 :

public ActionResult BulkData() 
    { 
      // This is only for show by default one row for insert data to the database 
      List<ContactInfo> ci = new List<ContactInfo> {new ContactInfo{ ID = 0, ContactName = "", ContactNo=""} }; 
      return PartialView(ci); 
    } 

후 변경되면 작동하지 않습니다. 이유를 이해할 수 없습니다. 또한 레이아웃의 모든 스크립트를 부분보기에 추가했지만 도움이되지 않았습니다. 보기의 코드는 다음과 같습니다.

@model List<MVCBulkInsert.ContactInfo> 
@{ 
    ViewBag.Title = "Insert Bulk Data"; 
} 
<style> 
    th { 
     text-align:left; 
    } 
    td { 
    padding:5px; 
} 
</style> 
<div style="width:700px; padding:5px; background-color:white;"> 
    @using (Html.BeginForm("BulkData","Save", FormMethod.Post)) 
    { 
     @Html.AntiForgeryToken() 
     @Html.ValidationSummary(true) 

     if (ViewBag.Message != null) 
     { 
      <div style="border:solid 1px green"> 
       @ViewBag.Message 
      </div> 
     } 

     <div><a href="#" id="addNew">Add New</a></div> 
     <table id="dataTable" border="0" cellpadding="0" cellspacing="0"> 
      <tr> 
       <th>Contact Name</th> 
       <th>Contact No</th> 
       <th></th> 
      </tr> 
      @if (Model != null && Model.Count > 0) 
      { 
       int j = 0; 
       foreach (var i in Model) 
       { 
        <tr style="border:1px solid black"> 
         <td>@Html.TextBoxFor(a=>a[j].ContactName)</td> 
         <td>@Html.TextBoxFor(a=>a[j].ContactNo)</td> 
         <td> 
          @if (j > 0) 
          { 
           <a href="#" class="remove">Remove</a> 
          } 
         </td> 
        </tr> 
        j++; 
       } 
      } 
     </table> 
     <input type="submit" value="Save Bulk Data" /> 
    } 
</div> 

@* Here I will add Jquery Code for validation/dynamically add new rows/Remove rows etc *@ 

@section Scripts{ 
    @Scripts.Render("~/bundles/jqueryval") 
    <script language="javascript"> 
     $(document).ready(function() { 

      //1. Add new row 
      $("#addNew").click(function (e) { 
       e.preventDefault(); 
       var $tableBody = $("#dataTable"); 
       var $trLast = $tableBody.find("tr:last"); 
       var $trNew = $trLast.clone(); 

       var suffix = $trNew.find(':input:first').attr('name').match(/\d+/); 
       $trNew.find("td:last").html('<a href="#" class="remove">Remove</a>'); 
       $.each($trNew.find(':input'), function (i, val) { 
        // Replaced Name 
        var oldN = $(this).attr('name'); 
        var newN = oldN.replace('[' + suffix + ']', '[' + (parseInt(suffix) + 1) + ']'); 
        $(this).attr('name', newN); 
        //Replaced value 
        var type = $(this).attr('type'); 
        if (type.toLowerCase() == "text") { 
         $(this).attr('value', ''); 
        } 

        // If you have another Type then replace with default value 
        $(this).removeClass("input-validation-error"); 

       }); 
       $trLast.after($trNew); 

       // Re-assign Validation 
       var form = $("form") 
        .removeData("validator") 
        .removeData("unobtrusiveValidation"); 
       $.validator.unobtrusive.parse(form); 
      }); 

      // 2. Remove 
      $('a.remove').live("click", function (e) { 
       e.preventDefault(); 
       $(this).parent().parent().remove(); 
      }); 

     }); 
    </script> 
} 

어디에서 문제가 될 수 있습니까?

+0

"작동하지 않는다"는 의미를 지정하십시오. 디버그 했니? 예외를 보았 니? –

+0

예외는 아닙니다. 어떻게 든보기 '

'의 링크조차도 테이블에 새 행을 추가하지 않기 때문에 자바 스크립트가 작동하지 않습니다. – curious

답변

0

문제는 부분보기가 스크립트 섹션을 인식하지 못하는 것입니다.

관련 문제