【问题标题】:Reference Display/Editor Templates Across Area Projects跨区域项目参考显示/编辑器模板
【发布时间】:2011-11-16 01:39:57
【问题描述】:

我有一个 ASP.NET MVC 3 应用程序,它有 2 个区域,这些区域是从主应用程序引用的独立项目。两个区域项目都位于主应用程序的区域目录中。我想知道我是否可以从另一个区域调用 DisplayTemplates。

例如,我在 ~/Areas/Area1/Views/Shared/DisplayTemplates/Test.cshtml 文件中添加了以下模板:

@model string
Test Display Template

现在在 Area2 项目的一个视图中我说:

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

但它不显示任何内容。我想知道是否有人可以让我知道这是否可能以及我做错了什么。

谢谢

【问题讨论】:

    标签: asp.net-mvc asp.net-mvc-3 asp.net-mvc-areas


    【解决方案1】:

    如果您想跨区域共享模板,请将模板放在 View 根目录中。

    代替;

    /Areas/Area1/Views/Shared/DisplayTemplates/Test.cshtml
    

    放在这里;

    /Views/Shared/DisplayTemplates/Test.cshtml
    

    另外,您的 Display 辅助方法调用的第二个参数;

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

    应该是这样的;

    @Html.Display("Test", "Test")
    

    第二个参数是您的模板名称。 MVC 视图引擎将根据名称而不是目录跟踪模板。这是一种更清洁的方法。

    【讨论】:

    • 谢谢,但我喜欢将模板打包到他们自己的项目中的想法。
    • 那些Area项目是MVC网站项目吗?
    • MVC 3 确实无法处理您想要完成的工作。尝试查看 MVCContrib 和 protable 区域。他们也有一个 VS 项目模板。 lostechies.com/erichexter/2010/04/07/…
    • 经过进一步研究,我会将其标记为答案,但解决方案是使用 MVCContrib 的便携式区域(如上所述)或使用 Razor Generator。希望这会有所帮助。
    猜你喜欢
    • 2020-05-03
    • 1970-01-01
    • 2013-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多