如何在我的NopCommerce模板中添加自定义HtmlHelper?

时间:2013-07-23 14:52:59

标签: asp.net-mvc-3 templates nopcommerce

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. 如何从我的视图中引用助手?

1 个答案:

答案 0 :(得分:2)

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

所以:

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

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

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

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

如何从我的视图中引用助手?

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

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

哦,如果你想解决静态帮助器中的某个实例,你可以使用它:

using Nop.Core.Infrastructure;
// ...
var whateverYouWant = EngineContext.Current.Resolve<IWhateverYouWant>();