【发布时间】:2013-07-02 04:35:59
【问题描述】:
我有一个迭代集合并为集合中的每个元素调用DisplayFor() 的视图。
我需要手动迭代(而不是将集合传递给 DisplayFor),以便告诉模板是否应该在列表中绘制中断。列表中的项目将只有 2 种类型,由它们排序,所以我只需要显示一次这个中断。
找到并正确调用了我的模板。
我可以看到它正确生成的 HTML,即:DisplayFor().ToHtmlString()
我可以将此 HTML 设置为范围变量,即:var html = DisplayFor().ToHtmlString() ..
但是即使Html.Raw(html) 也不会在浏览器中呈现它——HTML 已经完全消失了。
发生了什么事?
var renderBreakInList = Model.Items.Any(x => x.IsSomeType);
foreach(var item in Model.Items)
{
var renderBreak = renderBreakInList && item.IsOtherType;
Html.DisplayFor(x => item, new { renderBreak = renderBreak });
if (renderBreak)
{
renderBreakInList = false;
}
}
【问题讨论】:
-
您的示例代码看起来很奇怪...
DisplayFor应该是Html.DisplayFor...您能发布您的实际代码吗?顺便说一下,电话@Html.DisplayFor(x => item, new { renderBreak = renderBreak });应该可以工作...... -
是的,你是对的,它有
Html.只是忘记在转置时添加它 -
仍然缺少
@符号...您尝试过@Html.DisplayFor(x => item, new { renderBreak = renderBreak });吗?
标签: asp.net-mvc-4 razor display-templates