我有一个自定义控件,里面有一个网络资源。
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 资源的任何方法。
