我正在尝试制作可下载的CSV。我遇到的问题是我不确定如何将视图中的数据正确传递回控制器。
我在CSV中想要的所有数据都在@ Model.Table中。问题是我不确定如何将数据正确地传回我的控制器。请注意我在下面的js中尝试使用csvData = @ Model.Table.ToCsv()。这可怕的失败所以我不确定如何正确地做到这一点。
<div class="btn btn-default pull-right" id="dispoCSV">
<i class="icon-file-alt"></i>
Disposition Report</div>
<script>
$("#dispoCSV").click(function () {
var csvData = @Model.Table.ToCsv();
$.post("Respondent/DownloadCSV", function (data) {
csvData
})
});
</script>
当我通过这个障碍时,我想我可以轻松地确定如何使我的DownloadCSV方法将其转换为csv。
答案 0 :(得分:1)
我认为您不需要从视图转换为CSV。你的控制器可以这样做。我会这样试试:
型号:
public class YourModel {
public YourDataType Table { get; set; }
}
查看:
@model YourModel
@using (Html.BeginForm("Submit", "YourController", FormMethod.Post)) {
// Put your model properties in the form so that they get passed to the controller on form submit;
// use @Html.HiddenFor if you want to hide them from being displayed.
// Since your table property has nested properties, you probably need a custom editor template for this.
}
控制器:
public class YourController : Controller {
// Include an action here to display your view
[HttpPost]
public ActionResult Submit(YourModel model) {
var csvData = model.Table.ToCsv(); // assuming you have this method already since it's in your code above
// Do something with the data and return a view
}
}
答案 1 :(得分:0)
您应该传递可用于生成数据的过滤条件,而不是传回整个数据。在您的Action方法中,阅读此条件并生成数据并将其以CSV格式发送回UI。