我正在使用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: }
任何建议都将不胜感激。
答案 0 :(得分:0)
我认为您需要使用以下命令为主题创建专用项目
codegen theme MyTheme /CreateProject:true /IncludeInSolution:true
否则您的代码将无法找到。我对资源文件有同样的问题。
有关详细信息,请参阅docs中的生成主题结构一节。