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

我有这样的东西:

@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/

10-11 23:09
查看更多