Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从视图传递到控制器的空值_C#_Asp.net Mvc 3 - Fatal编程技术网

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@ShujaatSiddiqui
DataTable
是一种相当复杂的类型,能够从视图中将其发回的可能性非常小。我的建议是重新考虑您的视图模型,并尝试传递简单的数据,或者至少传递简单到可以序列化的数据。请参阅下面我的答案和注释解释。。。
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" />
    }
}