1

NopCommerce 模板通常只包括视图和资产,而不是代码。但他们可以吗?

我想要一个自定义的 HtmlHelper,我从我的观点中引用它。例如,如果我在我的主题中创建这个扩展:

namespace Nop.Theme.Foo.Helpers
{
    public static class NopHelpers
    {
        public static string Test(this HtmlHelper html)
        {
            return "foo";
        }
    }
}

我将构建的 dll 放在哪里?在我看来,我该如何引用它?以下不起作用

@using Nop.Theme.Foo.Helpers;
...
@Html.Test()

错误是:error: CS0234: The type or namespace name 'Theme' does not exist in the namespace 'Nop' (are you missing an assembly reference?)

所以我想我的问题是:

  1. 如何将自定义助手添加到我的主题/模板?
  2. 构建输出在哪里(所以 NopCommerce 可以加载它)?
  3. 我如何从我的角度引用助手?
4

1 回答 1

2

主题文件夹中的任何 dll都将被忽略。您仍然可以在主题项目中构建它们,但您需要将它们放入Nop.Web/bin文件夹中以便加载它们。

所以:

如何将自定义助手添加到我的主题/模板?

就像你拥有它一样——HtmlHelper直接在你的主题项目中创建一个扩展方法。

构建输出在哪里(所以 NopCommerce 可以加载它)?

将主题 dll 移动到Nop.Web/bin--iebin网站根目录下的目录。

我如何从我的角度引用助手?

就像你拥有它一样。添加 using 语句,然后使用 helper:

@using Nop.Theme.Foo.Helpers;
...
@Html.Test()

哦,如果你想在你的静态助手中解析某个东西的实例,你可以使用这个:

using Nop.Core.Infrastructure;
// ...
var whateverYouWant = EngineContext.Current.Resolve<IWhateverYouWant>();
于 2013-07-23T15:00:38.227 回答