2011-11-15 45 views
1

我有一个ASP.NET MVC 3应用程序,其中包含两个区域,分别是从主应用程序引用的项目。这两个区域项目都与主应用程序的Areas目录一致。我想知道是否可以从另一个区域调用DisplayTemplates。跨区域项目参考显示/编辑器模板

比如我在〜/地区/区域1 /浏览次数增加了以下模板/共享/ DisplayTemplates/Test.cshtml文件:

@model string 
Test Display Template 

现在,在区域2项目在视图中我说:

@Html.Display("Test", "~/Areas/Area1/Views/Shared/DisplayTemplates/Test.cshtml") 

但它没有显示任何东西。我想知道如果有人能让我知道这是否可能以及我做错了什么。

感谢

回答

2

如果你想跨区域共享模板,放在根目录视图模板。

而不是;

/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视图引擎将追踪名称上的模板,而不是目录。这是一个更清洁的方法。

+1

谢谢,但我喜欢将模板打包到自己的项目中。 – nfplee

+0

这些区域项目MVC网站项目? –

+1

MVC 3真的不能处理你想要完成的任务。尝试寻找MVCContrib和可能的区域。他们也有VS项目模板。 http://lostechies.com/erichexter/2010/04/07/mvccontrib-portable-area-visual-studio-project-template/ –