0

モデルにリストがあります。ビューはモデルにバインドされています。ajax を使用してリストにデータを入力しようとしています。そして、モデル全体を送信するフォームに「送信」ボタンがあります。モデル全体を送信している間、リストの値は「null」ですか??

Jsonを介してコントローラーから応答データを取得しています。応答データはモデルにバインドされていません。

<table id="tblTable" style="border-width:1px;border-style:solid" >
        <tr style="border-width:1px;border-style:solid">
            <th>
                @Html.Label("Col1")
            </th>
            <th>
                @Html.Label("Col2")
            </th>
        </tr>
        <tbody>
        @if (Model != null && Model.Operations!= null && Model.Operations.Count > 0)
        {
            foreach (var item in Model.Operations)
            {
                <tr style="border-width:1px;border-style:solid">
                    <td style="border-width:1px;border-style:solid">
                        @Html.DisplayFor(modelItem => item.Col1)
                    </td>
                    <td style="border-width:1px;border-style:solid">
                        @Html.DisplayFor(modelItem => item.Col2)
                    </td>
                </tr>
            }
        }
       </tbody>
    </table>

ajax リクエストに応答する私のコントローラー:

[HttpPost]
    public JsonResult UploadFile(HttpPostedFileBase file, Model model)
    {
         //extract file contents into the operations list
    model.Operations = new List<Operations>();
    model.Operations.Add(blah..blah)
      return Json(model);
    }

問題は、ajax を介してリストに入力する必要があることですが、完全なモデルを ajax で取得したデータと共に投稿します。

更新: JS コード:

$(document).ready(function () {

    $('#fileupload').fileupload({

        dataType: 'json',
        url: '/Summary/UploadFile',
        autoUpload: true,

        done: function (e, data) {
            var operations = data.result.Operations;
            var tbl = $('#tblTable');
            $.each(operations, function (key, val) {                                    
                $('<tr><td>' + val.col1 + '</td>' + '<td>' +               
                  val.col2 + '</td><tr>').appendTo(tbl);
            });          
        }
    }).on('fileuploadprogressall', function (e, data) {
        var progress = parseInt(data.loaded / data.total * 100, 10);
        $('.progress .progress-bar').css('width', progress + '%');
    });
});
4

0 に答える 0