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 -> 将名称属性添加到 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 回答