【问题标题】:How do I add a custom HtmlHelper to my NopCommerce template?如何将自定义 HtmlHelper 添加到我的 NopCommerce 模板?
【发布时间】:2013-07-23 14:52:59
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

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

    所以:

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

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

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

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

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

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

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

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

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

    【讨论】:

    • +1 用于添加命名空间@using Nop.Theme.Foo.Helpers;。这将突出显示自定义 Helpers(静态类)中所需的功能
    猜你喜欢
    • 2021-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-03
    • 1970-01-01
    • 2020-09-23
    • 1970-01-01
    相关资源
    最近更新 更多