C# 从视图传递到控制器的空值
商品报告视图:C# 从视图传递到控制器的空值,c#,asp.net-mvc-3,C#,Asp.net Mvc 3,商品报告视图: @model PMEX.CSR.Models.ReportModel @{ ViewBag.Title = "Commodity Report"; } <div> <table> <tr> <td> @{ if (Model != null)
@model PMEX.CSR.Models.ReportModel
@{
ViewBag.Title = "Commodity Report";
}
<div>
<table>
<tr>
<td>
@{
if (Model != null)
{
@Html.ActionLink("Download PDF Report", "DownloadReportPDF", Model);
}
}
</td>
</tr>
</table>
</div>
报告模型
public class ReportModel
{
public string testValue { get; set; }
public DataTable dt { get; set; }
public LikeFilterModel LikeFilterModelObj { get; set; }
// [Required]
// public string SearchText { get; set; }
public GridModels GridDataModel { get; set; }
/// <summary>
/// Represents that datagrid has rows in it.
/// </summary>
public bool isValue { get; set; }
}
公共类报表模型
{
公共字符串testValue{get;set;}
公共数据表dt{get;set;}
public LikeFilterModel LikeFilterModelObj{get;set;}
//[必需]
//公共字符串SearchText{get;set;}
公共GridModels GridDataModel{get;set;}
///
///表示datagrid中有行。
///
公共布尔值{get;set;}
}
当我在视图上收到我的模型时
我通过actionlink在控制器上接收的模型
正如你们所看到的,我在控制器上接收到的所有东西都是空的。请告诉我这里出了什么问题
我想将查看时收到的相同模型传递给控制器。您不能以这种方式将数据传递给控制器,来自视图的任何数据都应该在查询字符串中发布或传递,例如
if (Model != null)
{
@using (Html.BeginForm("DownloadPDFReport", FormMethod.Post))
{
@Html.HiddenFor(x => x.Property1)
@Html.HiddenFor(x => x.Property2)
...
<input type="submit" value="Download PDF Report" />
}
}
if(Model!=null)
{
@使用(Html.BeginForm(“DownloadPDFReport”,FormMethod.Post))
{
@Html.HiddenFor(x=>x.Property1)
@Html.HiddenFor(x=>x.Property2)
...
}
}
Html。ActionLink
希望有路由值,而不是对象模型。检查参考资料
…它不需要过账。它可以作为GET作为QueryString参数传递。作为route value对象传递模型可以将原始值作为GET的一部分传递回控制器。@ErikPhilips是的,我想我在查看模型时意识到GET可能不可能适用于此示例。仍然没有帮助。返回空值datatable@ShujaatSiddiquiDataTable
是一种相当复杂的类型,能够从视图中将其发回的可能性非常小。我的建议是重新考虑您的视图模型,并尝试传递简单的数据,或者至少传递简单到可以序列化的数据。请参阅下面我的答案和注释解释。。。
if (Model != null)
{
@using (Html.BeginForm("DownloadPDFReport", FormMethod.Post))
{
@Html.HiddenFor(x => x.Property1)
@Html.HiddenFor(x => x.Property2)
...
<input type="submit" value="Download PDF Report" />
}
}