RazorView,为多个模板使用相同的模型对象

时间:2014-01-14 16:27:33

标签: c# asp.net-mvc razor model

尝试使用同一个对象渲染两个单独的模板时遇到问题。

我有一些看起来像这样的东西:

@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 metadata,string htmlFieldName,string templateName,DataBoundControlMode mode,object additionalViewData,ExecuteTemplateDelegate executeTemplate)

因此它会检查模型/对象是否已用于渲染模板,然后如果它在我的示例中具有哪个模板/对象,则返回“”,因此不会显示第二个模板。

我有一个解决方法是克隆第二个模板的模型,但我想知道我能做的其他事情就像我可以设置的配置选项一样吗?

史蒂夫

1 个答案:

答案 0 :(得分:0)

现在解决这个问题的方法是创建

public class ModelWrapper{

      public object Model { get; set}
}

并将此设置传递给我实际需要的任何内容。

不幸的限制