我有一个ASP.NET MVC 3应用程序,其中包含2个区域,这些区域是从主应用程序引用的单独项目。这两个区域项目都位于主应用程序的Areas目录中。我想知道我是否可以从另一个区域调用DisplayTemplates。
例如,我在〜/ Areas / Area1 / Views / Shared / DisplayTemplates / Test.cshtml文件中添加了以下模板:
@model string
Test Display Template
现在在Area2项目的视图中我说:
@Html.Display("Test", "~/Areas/Area1/Views/Shared/DisplayTemplates/Test.cshtml")
但它没有显示任何内容。我想知道是否有人可以告诉我这是否可能以及我做错了什么。
由于
答案 0 :(得分:3)
如果您想跨区域共享模板,请将模板放在根视图目录中。
而不是;
/Areas/Area1/Views/Shared/DisplayTemplates/Test.cshtml
把它放在这里;
/Views/Shared/DisplayTemplates/Test.cshtml
此外,您的显示辅助方法调用的第二个参数;
@Html.Display("Test", "~/Areas/Area1/Views/Shared/DisplayTemplates/Test.cshtml")
应该是这个;
@Html.Display("Test", "Test")
第二个参数是你的模板名称。 MVC视图引擎将在名称上追踪模板,而不是目录。这是一种更清洁的方法。