我在将模型传递给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 })
我尝试将以下内容与表单标记一起使用,但值仍为NULL:
@Html.HiddenFor(model => model.statsForPieChart)
@Html.Action("PieChartReport", "Agency", new { _statsForPieChart = Model.statsForPieChart })
我尝试使用以下表单调用,但从未调用过该方法:
@using(Html.BeginForm(&#34; PieChartReport&#34;,&#34; Agency&#34;)) { @ Html.HiddenFor(model =&gt; mode.startsForPieChart) }
答案 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,但它现在正在工作。