编译器在 Orchard 主题中找不到 html 扩展方法
Compiler can't find html extension method in Orchard theme
我正在开发 Orchard 主题并创建了以下 Html 扩展方法:
using System;
using System.Web.Mvc;
namespace Themes.MyTheme {
public static class HtmlExtensions {
public static bool IsCurrent(
this HtmlHelper html,
string actionName,
string controllerName) {
string contextAction = (string) html.ViewContext.RouteData.Values["action"];
string contextController = (string) html.ViewContext.RouteData.Values["controller"];
bool isCurrent =
string.Equals(contextAction, actionName, StringComparison.CurrentCultureIgnoreCase)
&& string.Equals(contextController, controllerName, StringComparison.CurrentCultureIgnoreCase);
return isCurrent;
}
}
}
在 Razor 视图中,我添加了以下内容:
@using Themes.MyTheme
// More razor syntax
@if (!Html.IsCurrent("New", "Customer")) {
Html.ActionLink(T("New Customer").ToString(), "New", new { Controller = "Customer", Area = "My.Area" }, new { })
}
我遇到以下异常:
CS0246: The type or namespace name 'Themes' could not be found (are you missing a using directive or an assembly reference?)
This answer(和其他人)让我相信我必须将命名空间添加到我的 Views 文件夹中的 web.config,我已经这样做了。但我仍然收到此错误。
扩展方法在与 Razor 视图相同的程序集中定义(标准 Orchard 解决方案中的主题项目;我使用 codegen 创建了主题并在其中添加了主题)。
如何让 Razor/Orchard/the 编译器识别这个命名空间?
您需要将主题创建为自己的项目,而不仅仅是主题下的文件夹。恐怕没有自己的 .csproj 文件的主题不能在其中包含代码。使用 codegen 创建主题时,有一个标志:
/CreateProject:true
我正在开发 Orchard 主题并创建了以下 Html 扩展方法:
using System;
using System.Web.Mvc;
namespace Themes.MyTheme {
public static class HtmlExtensions {
public static bool IsCurrent(
this HtmlHelper html,
string actionName,
string controllerName) {
string contextAction = (string) html.ViewContext.RouteData.Values["action"];
string contextController = (string) html.ViewContext.RouteData.Values["controller"];
bool isCurrent =
string.Equals(contextAction, actionName, StringComparison.CurrentCultureIgnoreCase)
&& string.Equals(contextController, controllerName, StringComparison.CurrentCultureIgnoreCase);
return isCurrent;
}
}
}
在 Razor 视图中,我添加了以下内容:
@using Themes.MyTheme
// More razor syntax
@if (!Html.IsCurrent("New", "Customer")) {
Html.ActionLink(T("New Customer").ToString(), "New", new { Controller = "Customer", Area = "My.Area" }, new { })
}
我遇到以下异常:
CS0246: The type or namespace name 'Themes' could not be found (are you missing a using directive or an assembly reference?)
This answer(和其他人)让我相信我必须将命名空间添加到我的 Views 文件夹中的 web.config,我已经这样做了。但我仍然收到此错误。
扩展方法在与 Razor 视图相同的程序集中定义(标准 Orchard 解决方案中的主题项目;我使用 codegen 创建了主题并在其中添加了主题)。
如何让 Razor/Orchard/the 编译器识别这个命名空间?
您需要将主题创建为自己的项目,而不仅仅是主题下的文件夹。恐怕没有自己的 .csproj 文件的主题不能在其中包含代码。使用 codegen 创建主题时,有一个标志:
/CreateProject:true