无法将模型传递给Controller方法

时间:2017-02-02 14:48:43

标签: asp.net-mvc

我在将模型传递给Controller方法时遇到问题。我希望有人可以提供帮助。

这是模型(根据要求):

public IEnumerable<StatsForPieChart> statsForPieChart { get; set; }

public class StatsForPieChart
{
    public string destAgency { get; set; }
    public long recordCount { get; set; }
}

基本上,我有一个名为&#34; _Report.cshmtl&#34;的部分视图。在这个局部视图中,我使用函数返回来创建数据表,现在我想使用相同的数据(不执行额外的函数调用)来显示饼图。在局部视图中,我执行以下操作:

@Url.Action("PieChartReport", "Agency", Model.statsForPieChart)

我已通过此行的中断确认,statsForPieChart Inumerable已正确填充了我需要的数据。控制器方法如下所示:

public ActionResult PieChartReport(dbModels.AgencyViewModel.statsForPieChart _statsForPieChart)

当我在控制器方法的第一行中断时,该方法知道_statsForPieChart是对Model的引用,但该值现在为NULL。我丢失了所有数据。

我确定它很简单,但我还没有找到解决方案。在此先感谢您的帮助。

基于尝试使用以下建议的其他输入: 1.我尝试使用以下内容,但值仍为NULL:

@Html.Action("PieChartReport", "Agency", new { _statsForPieChart = Model.statsForPieChart })
  1. 我尝试将以下内容与表单标记一起使用,但值仍为NULL:

    @Html.HiddenFor(model => model.statsForPieChart)
    @Html.Action("PieChartReport", "Agency", new { _statsForPieChart = Model.statsForPieChart })
    
  2. 我尝试使用以下表单调用,但从未调用过该方法:

    @using(Html.BeginForm(&#34; PieChartReport&#34;,&#34; Agency&#34;)) {     @ Html.HiddenFor(model =&gt; mode.startsForPieChart) }

2 个答案:

答案 0 :(得分:0)

您使用的是错误的辅助方法。 Url.Action 用于生成特定操作的url和作为输入传递的控制器,我认为在这种情况下您需要Html.Action,因为您要渲染部分视图作为结果此调用,请注意,传递给 Html.Action 的参数应与名称和操作方法中的参数匹配,否则将不会回发。

所以改变这个:

@Url.Action("PieChartReport", "Agency", Model.statsForPieChart)

到此:

@Html.Action("PieChartReport", "Agency", new {_statsForPieChart= Model.statsForPieChart })

答案 1 :(得分:0)

我能够使用上面的推荐成功传递数据。最终解决方案如下:

$('.removeReq').click(function() {
  $('#password').removeAttr('required oninvalid');
});

我仍然不知道为什么它最初返回NULL,但它现在正在工作。