繁体   English   中英

将ViewData传递到局部视图

[英]Passing ViewData to Partial View

调节器

 IEnumerable<AvgPosGAFields> _myList = helper.ConvertToListAvgPosGa(locDataSetGACampaigns.Tables[0]);        
 ViewData["hourlydata"] = _myList;

我想使用此ViewData传递给我的局部填充表我正在使用renderpartial呈现我的局部我。 如何传递此ViewData? 以及如何在它上使用foreach?

主视图:

 Html.RenderPartial( "HourlyDetails",new ViewDataDictionary { { "hourlydata", 0 } } );

部分视图包含一个表,该表将由ViewData中的模型填充

作为替代方案,我建议将ViewData切换为使用视图模型,因为它们是强类型的。

您可以通过以下方式执行此操作:

创建一个视图模型

public class AViewModel
{
  public IEnumerable<AvgPosGAFields> HourlyData { get; set; }
}

调节器

var model = new AViewModel();
model.HourlyData = helper.ConvertToListAvgPosGa(locDataSetGACampaigns.Tables[0]);

return View(model);

上面假设您的方法返回IEnumerable<AvgPosGAFields>

视图

在顶部添加模型参考,然后按如下所示将模型传递到您的局部模型中:

@model AViewModel
...
@Html.Partial("HourlyDetails", Model.HourlyData)

部分视图

还将模型引用添加到局部视图的顶部,即

@model IEnumerable<AvgPosGAFields>

这意味着您将能够按如下所示部分循环模型:

@foreach(var avgPosGAField in Model)
{
      @avgPosGAField.FooProperty
}

您可以在控制器中使用Html.Action()

public ActionResult RenderAction()
{
   //....
   IEnumerable<AvgPosGAFields> _myList = helper.ConvertToListAvgPosGa(locDataSetGACampaigns.Tables[0]);        

   return PartialView( _myList );
}

并从您想要的其他视图调用它:

@Html.Action("RenderAction", "Controller")

RenderAction视图中,使用foreach循环。

检查您是否以某种方式意外或部分故意覆盖了完整的ViewData,我的问题是覆盖了ViewData以进行模板处理,而没有意识到其余的ViewData已经消失了。

@Html.Partial("_EmployeeFormContent", @Model.Employee, new ViewDataDictionary() { TemplateInfo = new TemplateInfo { HtmlFieldPrefix = nameof(Model.Employee) } })

将当前ViewData添加到新的ViewDataDictionary修复了该问题:

    @Html.Partial("_EmployeeFormContent", @Model.Employee, new ViewDataDictionary(ViewData) { TemplateInfo = new TemplateInfo { HtmlFieldPrefix = nameof(Model.Employee) } })

使用一个viewbag代替viewdata

IEnumerable<AvgPosGAFields> _myList = helper.ConvertToListAvgPosGa(locDataSetGACampaigns.Tables[0]);
ViewData["hourlydata"] = _myList;

所以尝试

ViewBag.hourlydata = _myList;

然后即使它不起作用,请尝试此解决方案
http://www.codenoevil.com/pass-additional-viewdata-asp-net-mvc-4/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM