如何在Orchard主题中使用c#singleton类

时间:2016-04-28 21:03:48

标签: c# themes orchardcms

我正在使用Orchard构建我的网站,并想在生产环境中添加不同的元素,并在主题中测试环境。我尝试在Orchard Themes类中使用c#singleton类来获取它是否是生产环境。然后在主题中的cshtml文件中使用单例类。代码可以编译。但在运行时,它会抛出异常的说法:名称'主题'在当前上下文中不存在。我必须添加"主题"在我添加的类之前的命名空间。否则,它不会通过编译。

详细说明: 我将一个单例类:EnvironmentDev.cs文件添加到Themes.csproj文件中。它包含静态GetInstance方法和IsProd属性。 在Themes.csproj文件中,它显示:

<ItemGroup>
    <Compile Include="EnvironmentDev.cs" />
</ItemGroup>

在Themes的Document.cshtml文件中,我添加了以下代码:

@{
    if (Themes.EnvironmentDev.GetInstance().IsProd) {
        // Add production element
    }
    else {
        // Add test site element
    }
}

详细错误讯息: 描述:编译服务此请求所需的资源时发生错误。请查看以下特定错误详细信息并相应地修改源代码。

编译器错误消息:CS0103:名称&#39;主题&#39;在当前上下文中不存在

来源错误:

Line 46:     @Display(Model.Head)
Line 47:     @{
Line 48:         if (Themes.EnvironmentDev.GetInstance().IsProd) {
Line 49:             <script src="https://XXXX.js"></script> //using XXXX instead of real link
Line 50:         }

任何建议都将不胜感激。

1 个答案:

答案 0 :(得分:0)

我认为您需要使用以下命令为主题创建专用项目

codegen theme MyTheme /CreateProject:true /IncludeInSolution:true

否则您的代码将无法找到。我对资源文件有同样的问题。

有关详细信息,请参阅docs中的生成主题结构一节。