3
我嘗試使用同一個對象呈現兩個單獨的模板時遇到問題。RazorView,爲多個模板使用相同的模型對象
我有一些看起來像這樣:
@Html.DisplayFor(m => Model, "TemplateOne")
@Html.DisplayFor(m => Model, "TemplateTwo")
第一個模板得到渲染並不會第二個。
我所使用的.NET反射來逐步執行代碼,看看發生了什麼事情,發現這個:
if (html.ViewDataContainer.ViewData.TemplateInfo.VisitedObjects.Contains(item))
{
return string.Empty;
}
TemplateHelpers.TemplateHelper(HTML的HtmlHelper,ModelMetadata元數據,串htmlFieldName,串TEMPLATENAME,DataBoundControlMode模式,對象additionalViewData,ExecuteTemplateDelegate executeTemplate)
因此,它檢查模型/對象是否已經用於呈現模板,然後如果它在我的示例中有,它返回「」,所以第二個模板不會被顯示。
我有一個解決方法是克隆第二個模板的模型,但我想知道是否有其他的東西我可以做,就像我可以設置配置選項?
史蒂夫
必須有別的事情你做錯了,因爲我不能再現這個問題。從View和DisplayTemplates中發佈更多的代碼,也許會有所幫助。 – Zabavsky
我也無法重現這一點(試用MVC 3,4和5)。然而,我注意到的一個問題是,有時在使用VS2013和MVC 5構建之後,一個模板顯然會丟失。實際上,我必須修改調用模板的視圖,保存並重建以使其正常工作。似乎是間歇性的,可能是一個錯誤。 –
如果我要將同一模型上的另一個屬性傳遞給其中一個模板,我會看看是否可以在新項目中獲得同樣的結果。我會讓你張貼 –