我在尝试使用同一对象渲染两个单独的模板时遇到问题。
我有这样的东西:
@Html.DisplayFor(m => Model, "TemplateOne")
@Html.DisplayFor(m => Model, "TemplateTwo")
第一个模板将被渲染,第二个模板将不被渲染。
我使用.NET Reflector遍历代码以查看发生了什么,并发现了这一点:
if (html.ViewDataContainer.ViewData.TemplateInfo.VisitedObjects.Contains(item))
{
return string.Empty;
}
TemplateHelpers.TemplateHelper(HtmlHelper html,ModelMetadata元数据,字符串htmlFieldName,字符串templateName,DataBoundControlMode模式,对象AdditionalViewData,ExecuteTemplateDelegate executeTemplate)
因此,它将检查是否已使用模型/对象来渲染模板,然后在我的示例中,如果该模板/对象具有它,则返回“”,因此不会显示第二个模板。
我有一个解决方法是克隆第二个模板的模型,但是我想知道是否还有其他我可以做的事情,例如可以设置的配置选项?
史蒂夫
最佳答案
现在对我来说解决这个问题的方法是
public class ModelWrapper{
public object Model { get; set}
}
并将此设置模型传递给我实际需要的任何东西。
不幸的限制
关于c# - RazorView,同一模型对象用于多个模板,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21118613/