一点背景知识
我们最近有一个很多人使用的 MVC4 Web 应用程序,我们希望将其移植到 Orchard CMS。尽管这是“管理”类型的应用程序,但我们不希望它成为 Orchard 管理部分的一部分。该应用程序目前已上线,我们希望最终用户尽可能不可见到 Orchard 的迁移。
我们现在在哪里
我们遵循这个答案如何将现有 ASP.NET MVC 应用程序与 Orchard CMS 集成但我们使用布局(Razor 而不是 Orchard),并且它无法(默认)以 Orchard 渲染页面的方式工作(控制器操作返回的视图在没有布局的情况下显示 - _ViewStart.cshtml 被忽略)。我尝试在 View 方法中指定布局的路径,但它不起作用或者路径不好,因为我们位于模块中。有没有办法告诉 Orchard 使用 _layout.cshtml 文件并绕过 Orchard 主题?
可以绕过 Orchard 主题。请注意,我使用 MvcMailer 执行此操作,因此输出的电子邮件是带有布局的“模板化”HTML。我不能肯定地说这在常规页面上有效,但你可以尝试一下。只要把这个放在你的视野中:
@inherits System.Web.Mvc.WebViewPage<object>
@{
Layout = "_Layout.cshtml";
}
警告:您不能使用较新的 @model 指令。我只是回到旧的风格并将我的模型放在“对象”所在的位置:
@using Namesapce.ViewModels
@inherits System.Web.Mvc.WebViewPage<MyViewModel>
否则,创建主题并覆盖 Orchard 的任何形状都非常简单。我有两种方法:
- 创建一个简单的主题,覆盖形状(假设你想要一个
不同的登录,只需在主题的~/View中创建Login.cshtml
文件夹),使用替代项(使用 Layout-homepage.cshtml 覆盖
主页的布局),有你的.css等;
- 使用一些技巧用模块中的代码覆盖主题,并创建
主题文件夹中您自己的视图和形状。例如,您可以在主题中包含一个 Layout.cshtml 文件,其中包含显示形状的代码。但是,形状本身(.cshtml 文件)位于您的模块中,这对于使用仪表板类型主题非常有用,该主题将
调用在不同模块中命名相同的形状,但是
显示不同的内容。这个代码有点深入。只要询问您是否需要样品即可。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)