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

問題は、部分的なビューがスクリプトセクションを認識しないことでした。

関連する問題