您返回的
JsonResult
,不是
ViewResult
,因此设置
ViewBag
属性没有意义(
查看包
用于将数据传递给
View
)还有你的
<pre id="resultado">@ViewBag.Message</pre>
元素将只显示
ViewBag.Message
第一次呈现页面时。
您需要在
JsonResult公司
并用ajax成功方法对其进行测试。
更改控制器代码以根据您的情况返回不同的值
public ActionResult CargaCSV(HttpPostedFileBase archivo)
{
if (archivo.ContentLength = 0)
{
string message = "you need attach file to load it";
return Json( new { message = message });
}
.... // your code to process the file
return Json(new { registros = registros });
}
并更改成功回调中的代码以测试结果
success: function (data) {
if (data.message) {
$('#resultado').text(data.message);
} else if (data.registros) {
var result = $("#resultado");
....
for (var i = 0; i < data.registros.length; i++) {
var val = data.registros[i];
....
}
result.append("</table>");
}
}
作为补充说明,您可以通过生成
<table>
及其标题(应在
<thead>
元素),并使用
display: none;
只需添加
<tr>
its内部的元素
<tbody>
元素(然后在成功回调中显示/隐藏该表),例如
<table id="resultstable" style="display:none">
<thead>
....
</thead>
<tbody id="results"></tbody>
<table>
剧本
var table = $('#resultstable');
var results = $('#results');
var message = $('#resultado');
$('btnCargarCsv').on('click', function () {
....
$.ajax({
....
success: function (data) {
if (data.message) {
message.text(data.message);
table.hide();
} else if (data.registros) {
results.empty(); //remove any existing rows
table.show();
for (var i = 0; i < data.registros.length; i++) {
var val = data.registros[i];
var row = $('<tr></tr>');
for(int j = 0; j < val.length; j++) {
row.append($('<td></td>').text(val[j]));
}
results.append(row);
}
}
}
});
});
此外,您应该测试文件输入的值是否为
null
在进行ajax调用之前(如果是,则取消ajax调用并显示消息),以防止对服务器进行不必要的调用。