0

dojo モジュールをユーザー インターフェイスに追加する際に問題が発生します。episerver/shell でアクセスしようとします。module.conifg を追加しました。

<module>

  <assemblies>
    <add assembly="Mobile.Web" />
  </assemblies>

  <dojoModules>
    <add name="MobileWeb" path="Scripts" />
  </dojoModules>

</module>

に dojo モジュールを追加し、モジュール~/ClientResources/js/KeyValueEditor.jsに名前を付けdeclare('MobileWeb.js.KeyValueEditor', [widget, templatedMixin]、ブロック タイプに 追加しました。

[ClientEditor(ClientEditingClass = "MobileWeb.js.KeyValueEditor")]
public virtual string KeyValueCategoryData { get; set; }

時々動作しますが、dojoModules -> add name 属性を MobileWeb に変更すると、動作しなくなります。誰でもこれが何であるか知っていますか?

4

1 に答える 1

1

システムがクライアント リソースの場所を認識していないようです。

dojoModules ノードの名前は名前空間の一種であり、パスは Dojo がその名前空間のリソース/スクリプトを見つけることができるフォルダーを指している必要があります。このパスは、モジュールのルート ディレクトリからの相対パスです。

私が理解しているように、JavaScript ファイルを ClientResources/js サブフォルダーに配置し、スタイルをモジュール ディレクトリ内の ClientResources/css サブフォルダーに配置することをお勧めします。この場合、次のように Dojo モジュールを定義できます。

<dojoModules>
  <add name="MobileWeb" path="ClientResources/js" />
</dojoModules>

これは、システムがモジュール ディレクトリの ClientResources/js サブフォルダーでリソースを見つけようとすることを意味します。ウィジェットを宣言するときは、名前空間とフォルダー構造に従う必要があります。次のように ClientResources/js/KeyValueEditor.js ファイルでウィジェットを宣言できます。

define([
// your imports
],
function (/* imports */) {
    return declare("MobileWeb.KeyValueEditor", [_Widget, /* … */ ], {
        // implementation
    });
});

そして、バックエンド C# コードでウィジェットを参照するときに MobileWeb.KeyValueEditor 名を使用できます。

EPiServer 7 のサンプル アドオンで、いくつかの例とソース コードを見つけることができます。

于 2013-05-31T13:26:45.877 に答える