2017-05-04 44 views
0

我在MVC5中從部分視圖插入批量數據時遇到了問題。當它不是局部視圖時,它工作得很好。我使用的這個例子:http://www.dotnetawesome.com/2014/08/how-to-insert-multiple-record-to-database-at-a-time-aspnet-mvc4.html 這是從控制器的原代碼:C#MVC5 BulkData Insert在部分視圖中不起作用

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

沒有例外。不知何故,JavaScript不起作用,因爲即使視圖'

'中的鏈接也不會向表中添加新行 – curious

回答

0

問題是部分視圖無法識別腳本部分。

相關問題