我有一个强类型的部分视图,它获取ProductImage,当它呈现时,我还想为它提供一些额外的ViewData,我在包含页面中动态创建这些ViewData.如何通过RenderPartial调用将强类型对象和自定义ViewData传递给局部视图?

var index = 0;
foreach (var image in Model.Images.OrderBy(p => p.Order))
{
  Html.RenderPartial("ProductImageForm", image); // < Pass 'index' to partial
  index++;
}

推荐答案

RenderPartial接受另一个参数,它只是一个ViewDataDictionary.你就快到了,就这样说吧:

Html.RenderPartial(
      "ProductImageForm", 
       image, 
       new ViewDataDictionary { { "index", index } }
); 

请注意,这将覆盖所有其他视图默认拥有的默认视图数据.如果要向ViewData添加任何内容,则不会在这个新字典中传递给部分视图.

Asp.net相关问答推荐

包含Include的低速EF核心查询

在 lambda 表达式中否定 Func

在 aspx 页面中使用 if else 和 eval

ASP.NET web api 无法获取 application/x-www-form-urlencoded HTTP POST

说服遗留应用程序 VB6 开发人员切换到 C#

解析 JSON 响应的最简单方法

asp.net mvc 中的 RedirectToAction 用法

什么相当于 ASP.NET 中的 cron 作业(job)?

使用 ASP.NET WebForms 的 jQuery DataTables 服务器端处理

是否有用于 Asp.net 标记的#IF DEBUG?

在每个控制器的 ASP.NET WebAPI 上强制使用 CamelCase

ASP.NET vNext 与主机无关,这意味着什么?

在 ASP.NET 中实现 404 的最佳方法

如何在 ASP.NET 站点中添加 favicon.ico

如何从 ASP.Net 发布然后重定向到外部 URL?

如何在 ASP.net 中使用 wkhtmltopdf.exe

由于文件路径太长,网站发布失败

脚本管理器控制实际上是做什么的?

ASP.NET 5、EF 7 和 SQLite - SQLite 错误 1:没有这样的表:博客

中继器中的中继器