Skip to main content
 首页 » 编程设计

c#之WebResource 是空白页

2024年02月03日29exmyth

我有一个自定义控件,里面有一个网络资源。

webresource 是一个 javascript 文件,我将 javascript 文件上的构建选项设置为“嵌入式资源”,我的自定义控件所在的项目的 AssemblyInfo.cs 中有以下代码行:

// Export the MultiSelectGridView.js file 
[assembly: WebResource("SOM.DCO.CustomWebControls.MultiSelectGridView.js", "application/x-javascript")] 

在我的自定义控件中,我在覆盖的 onload 事件中有以下几行:

private const string MULTISELECTGRIDVIEW_JS = "SOM.DCO.CustomWebControls.MultiSelectGridView.js"; 
Type t = this.GetType(); 
                string url = Page.ClientScript.GetWebResourceUrl(t, MULTISELECTGRIDVIEW_JS); 
                if (!Page.ClientScript.IsClientScriptIncludeRegistered(t, MULTISELECTGRIDVIEW_JS)) 
                    Page.ClientScript.RegisterClientScriptInclude(t, MULTISELECTGRIDVIEW_JS, url); 

我还尝试了以下方法:

private const string MULTISELECTGRIDVIEW_JS = "SOM.DCO.CustomWebControls.MultiSelectGridView.js"; 
if (!Page.ClientScript.IsClientScriptIncludeRegistered(t, MULTISELECTGRIDVIEW_JS)) 
                    Page.ClientScript.RegisterClientScriptResource(t, MULTISELECTGRIDVIEW_JS); 

不幸的是,无论我做什么,我得到的网络资源都是空白的,因此我的 javascript 文件中的任何函数都没有包含/定义在我的消费页面中。

我是否漏掉了一些明显的东西?

请您参考如下方法:

我刚刚遇到了同样的问题,要找出解决办法简直就是一场噩梦。感谢this link,我终于弄明白了.

如果您在解决方案资源管理器中右键单击您的解决方案名称,然后选择“属性”,您将看到“默认命名空间”的文本框。

此默认命名空间值必须与您放置在网络资源前面的命名空间相同。

因此,如果您的属性中的默认命名空间仅为“SOM”或仅为“CustomWebControls”,您需要将其更改为“SOM.DCO.CustomWebControls”。

然后在您的“程序集:WebResource”中使用相同的完整命名空间,并调用 RegisterClientScriptInclude(或 RegisterClientScriptResource,或您用来附加 Web 资源的任何方法。