2016-04-28 47 views
1

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

详情: 我在Themes.csproj文件中添加了一个singleton类:EnvironmentDev.cs文件。它包含静态GetInstance方法和IsProd属性。 在Themes.csproj文件,它示出了:

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

在主题的Document.cshtml文件,我添加以下代码:

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

详细的错误消息: 描述:编译过程中发生错误为请求提供服务所需的资源。请查看以下具体的错误细节并适当修改您的源代码。

编译器错误消息:CS0103:名称“主题”不存在于当前上下文存在

源错误:

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:   } 

任何建议,将不胜感激。

回答

0

我认为你需要创建一个专门的项目为您的主题使用以下命令

codegen theme MyTheme /CreateProject:true /IncludeInSolution:true 

,否则你的代码将不会被发现。我对资源文件有同样的问题。

请参阅段落docs中生成主题结构以获取更多信息。

+1

谢谢,这很有帮助! – JinghuiZhang