モデルにリストがあります。ビューはモデルにバインドされています。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 + '%');
});
});