【发布时间】:2020-03-19 05:58:11
【问题描述】:
我想在用户单击 Excel 按钮时下载 Excel 文件。这是我的Model 和Object:
List<VMStockScreenerModel> listofStockScreener = (List<VMStockScreenerModel>)TempData["StockScreener"];
TempData["StockScreener"] = listofStockScreener;
这是我认为的 Excel 按钮:
<div class="col-md-1 padding-fx text-left" id="btn_FilterStocks">
<span onclick="DownloadFilterStocks(@listofStockScreener.ToList());" class="pull-right icon-merge" data-toggle="tooltip" title="Download">
<i class="fa fa-file-excel-o"></i>
<i class="fa fa-cloud-download"></i>
</span>
</div>
这是我的OnClick 处理程序:
function DownloadFilterStocks() {
debugger;
var Obj = [@listofStockScreener];
Obj = JSON.stringify({ 'Obj': Obj });
var urls = '@(Html.Raw(Url.Action("Download_StockScreener","Home", new { Obj = "_Obj_"},Request.Url.Scheme)))'.replace("_Obj_", Obj);
}
控制器代码
public FileResult Download_StockScreener(VMStockScreenerModel Obj)
{
try
{
string fileName = string.Empty;
string filePath = string.Empty;
string fileName_filePath = string.Empty;
fileName_filePath = StockScreener_DownloadExcel(Obj);
if (fileName_filePath.Contains("@"))
{
filePath = fileName_filePath.Split('@')[0];
fileName = fileName_filePath.Split('@')[1];
}
if (fileName != "")
{
//return File(filePath, "text/csv", fileName);
}
else
{
return null;
}
}
catch (Exception ex)
{
Log.Logging("HomeController => Download_StockScreener", ex.Message + "\n" + ex.StackTrace);
} return null;
}
【问题讨论】:
-
你能告诉我们控制器代码吗?
-
您好,欢迎您。我建议您查看 HTML 的源代码作为浏览器的输出。我想你会发现你的
listofStockScreener对象没有像你期望的那样写入标记或 JavaScript。很可能,它是作为类的名称写的,而不是任何内容的实际列表。相反,您可能希望在您的listofStockScreener上执行for循环并为每个按钮显示一个 Excel 按钮 - 当然,假设您希望能够为每个VMStockScreenerModel实例下载一个文件listofStockScreener. -
另外,假设您希望通过
VMStockScreenerModel下载,VMStockScreenerModel上的哪个属性对应于您的 Excel 文件?那是什么格式的?也就是说,它是 Excel 文档的路径吗?文件的唯一标识符?还是它实际上是对 C# 中的二进制或文件对象的引用?这将影响您编写代码的方式。
标签: javascript c# asp.net .net asp.net-mvc