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--ie binWeb サイトのルートにあるディレクトリに移動します。

私の視点からヘルパーを参照するにはどうすればよいですか?

あなたが持っているように。using ステートメントを追加してから、ヘルパーを使用します。

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

ああ、静的ヘルパー内の何かのインスタンスを解決したい場合は、これを使用できます。

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