将DataTable从View传递到新的Controller方法
本文关键字:Controller 方法 DataTable View | 更新日期: 2023-09-27 18:28:58
我正试图将DataTable从视图传递到控制器中的方法。当我尝试从控制器访问DataTable时,我会得到一个NullReference异常。
DataTable被填充在视图中,我可以通过在视图中运行以下代码来确认:
@{
Debug.WriteLine("########DATATABLE COLUMNS########");
foreach (DataColumn column in Model.Columns) {
Debug.WriteLine(column.ToString());
}
}
这将返回DataTable的列。当我尝试将此DataTable发送到控制器时:
<a href="@Url.Action("expExcel", "Home", new {dt = Model} )">export to excel...</a>
控制器中的方法:
public ActionResult expExcel(DataTable dt) {
Debug.WriteLine("########DATATABLE COLUMNS########");
foreach (DataColumn column in Model.Columns) {
Debug.WriteLine(column.ToString());
}
//some more code...
}
导致此错误:
System.NullReferenceException
当我尝试访问DataTable dt时,会发生错误。
如何将DataTable从视图传递给新的Controller方法?
我看到过其他关于这个问题的帖子,到目前为止还没有得到回复,这可能是因为在这些情况下,这个问题太具体了。我试着在这篇文章中概括更多。
我也有同样的情况。我使用TempData
将我的datatable
从视图发送到控制器
希望这对你有帮助。
视图:
@{
if (Model.LedgerTable.Rows.Count > 0)
{
TempData["data"] = Model.LedgerTablelist(Model.LedgerTable);
TempData["datatable"] = Model.LedgerTable;
<a href="@Url.Action("ExportToExcel", Model)" data-example-id="" class="btn btn-info" id="excelbtn"><i class="fa fa-download" aria-hidden="true"></i> Download</a>
}
}
控制器:
public FileContentResult ExportToExcel(LedgerDetails obj)
{
//LedgerDetails obj = new Models.LedgerDetails();
if (TempData["data"] != null)
{
List<LedgerData> liobj = new List<LedgerData>();
liobj = (List<LedgerData>)TempData["data"];
}
if (TempData["datatable"] != null)
{
obj.LedgerTable = (DataTable)TempData["datatable"];
}
byte[] filecontent = Models.LedgerDetails.ExportExcel(obj.LedgerTable,obj);
return File(filecontent, Models.LedgerDetails.ExcelContentType, "LedgerDetails.xlsx");
}