WebResource.axd空白或未找到

tac*_*aco 10 asp.net dll webresource.axd .net-assembly

我正在尝试导出.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文件的属性:
构建操作:"嵌入式资源"
复制到输出目录:"始终复制"

我错过了什么步骤?

tac*_*aco 2

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

因此,不要使用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");
    }
}
Run Code Online (Sandbox Code Playgroud)

上面的代码片段使用 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");
    }
}
Run Code Online (Sandbox Code Playgroud)

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

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

/耸肩