10

我正在尝试以 .dll 格式导出控件库,以供办公室中的其他开发人员使用。

我最初创建的解决方案如下所示:

解决方案 1:
- Mri.Controls(类库)
- Mri.FmTool(Web 应用程序)

Mri.FmTool 引用 Mri.Controls。

在 Mri.Controls 中,我有一些 javascript WebResources。Mri.FmTool 似乎可以很好地阅读 WebResources,当 Mri.FmTool 网络应用程序运行时,我所有的 javascript 网络资源都会出现。

所以,现在我试图创建一个简单的解决方案来使用 Mri.FmTool

解决方案 2:
- Mri.ConsumerTest(Web 应用程序)

我采用了最新的 Mri.Controls.dll 并将其添加为对 Mri.ConsumerTest 应用程序的引用。Mri.Controls 中的所有控件似乎都在 Mri.ConsumerTest 中工作。Intellisense 正在工作,它可以编译,没有问题。

但是,运行它时,大部分 WebResource.axd 文件都是空的,只是空白。一个 WebResource.axd 文件不是空白的,它只是说“找不到此资源”。

以下是“属性”窗口中 javascript 文件的属性:
构建操作:“嵌入式资源”
复制到输出目录:“始终复制”

我错过了什么步骤?

4

3 回答 3

3

您可能缺少 [assembly:WebResource("YourNameSpace.YourFile.js", "text/javascript")] 属性。WebResource.axd 需要该属性。您可以查看知识库文章以获取有关此问题的更多信息。

于 2009-04-08T19:06:46.940 回答
2

资源是否设置为 DLL 的一部分?

打开解决方案 Mri.Controls 并查看您的 javascript 资源文件的属性。
我认为这就是问题所在。

于 2009-04-08T16:22:16.460 回答
2

我注意到我的 WebResource CSS 文件正在正确加载,但在新解决方案中的 WebResource 中没有加载 Javascript。

所以,而不是使用System.Web.UI。ClientScriptManager用于注册 WebResources,我切换到使用System.Web.UI。脚本管理器。现在文件来自ScriptManager.axd(而不是WebResource.axd)。这似乎解决了问题。

修复前的旧代码:

public class ScriptManagerExtension : System.Web.UI.ScriptManager
{
    protected override void OnInit(EventArgs e)
    {
        base.OnInit(e);
        Page.ClientScript.RegisterClientScriptResource(this, typeof(ScriptManagerExtension), "Mri.Controls.Resources.Scripts.Libraries.jQuery.js");
    }
}

上面的代码片段使用 System.Web.UI.ClientScriptManager

修复后的新代码:

public class ScriptManagerExtension : System.Web.UI.ScriptManager
{
    protected override void OnInit(EventArgs e)
    {
        base.OnInit(e);
        RegisterClientScriptResource(this, typeof(ScriptManagerExtension), "Mri.Controls.Resources.Scripts.Libraries.jQuery.js");
    }
}

上面的代码片段使用 System.Web.UI.ScriptManager

据我了解,ClientScriptManager 是在 2.0 中引入的。我相信 ScriptManager 是管理脚本的新改进的 3.5 方式,具有更多功能。

/耸耸肩

于 2009-04-13T15:43:46.860 回答