是否可以在Orchard CMS中使用剃刀布局并绕过主题

W3M*_*Max 4 asp.net-mvc orchardcms

一点背景

我们有一个最近的MVC4 Web应用程序,我们想要移植到Orchard CMS.即使这是一个"管理"类型的应用程序,我们也不希望它成为Orchard管理部分的一部分.这个应用程序目前正在运行,我们希望移动到Orchard尽可能对最终用户不可见.

我们现在在哪里

我们按照这个答案作为如何将现有的ASP.NET MVC应用程序与Orchard CMS集成,但是我们使用布局(Razor not Orchard)并且它不能(默认情况下)使用Orchard呈现页面的方式(控制器操作返回的视图是没有布局显示 - 忽略_ViewStart.cshtml).我试图在View方法中指定布局的路径,但它不起作用或路径不好,因为我们在一个模块中.有没有办法告诉Orchard使用_layout.cshtml文件并绕过Orchard主题?

REM*_*ESQ 5

可以绕过Orchard主题.请注意,我正在使用MvcMailer执行此操作,因此输出的电子邮件是带有布局的"模板化"HTML.我无法明确地说这适用于常规页面,但您可以尝试一下.在你的视图中拍下这个:

@inherits System.Web.Mvc.WebViewPage<object>
@{
  Layout = "_Layout.cshtml";
}
Run Code Online (Sandbox Code Playgroud)

警告:你不能使用更新的@model directiv.我只是回到原来的风格,把我的模型放在"对象"的位置:

@using Namesapce.ViewModels
@inherits System.Web.Mvc.WebViewPage<MyViewModel>
Run Code Online (Sandbox Code Playgroud)

否则,创建一个主题并覆盖Orchard的任何形状都非常简单.我有两种方法:

  1. 创建一个简单的主题,覆盖形状(假设你想要一个不同的登录,只需在主题的〜/ View文件夹中创建Login.cshtml),使用替换(使用Layout-homepage.cshtml覆盖主页的布局),拥有你的. css等;
  2. 使用一些技巧用模块中的代码覆盖主题,并在主题文件夹中创建自己的视图和形状.例如,您可以在主题中使用Layout.cshtml文件,其中包含显示形状的代码.但是,形状本身(.cshtml文件)存在于您的模块中,这非常适合使用仪表板类型主题,该主题将调用在不同模块中命名相同但显示不同内容的形状.这个代码更深入一些.只要问你是否需要样品.