2010-02-04 104 views
1

我有一個自定義控件,它有一個webresource。WebResource是空白頁

的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); 

我也試過如下:

​​3210

不幸的是,無論我做什麼,我回來的webresource都是空白的,所以我的JavaScript文件中的函數都沒有包含/定義在我的消費頁面中。

我錯過了一些明顯的東西嗎?

回答

1

事實證明,即使我的JavaScript是在「命名空間」SOM.DCO.CustomWebControls中,它在一個名爲「MultiSelectGridView」的文件夾中。 所以我把它的所有引用從SOM.DCO.CustomWebControls.MultiSelectGridView.js更改爲SOM.DCO.CustomWebControls.MultiSelectGridView.MultiSelectGridView.js,現在它工作。

1

我在過去遇到的唯一問題是在調用GetWebResourceUrl時傳錯了Type。您必須將Type設置爲Type,它來自與嵌入式資源相同的程序集。

使用this.GetType()會出現問題嵌入資源(as described by Rick Strahl

其他的一切看起來不錯給我。

3

我只是有這個相同的問題,這是一個噩夢找出修復。我終於明白了,歸功於this link

如果在解決方案資源管理器中右鍵單擊您的解決方案名稱並選擇「屬性」,您將看到「默認命名空間」的文本框。

此默認命名空間值必須與您放在網絡資源前面的命名空間相同。因此,如果屬性中的默認名稱空間僅爲「SOM」或僅「CustomWebControls」,則需要將其更改爲「SOM.DCO.CustomWebControls」。

然後使用相同的完整的命名空間在你的。「裝配:WebResource」和您的來電RegisterClientScriptInclude(或RegisterClientScriptResource,或者你使用附加網絡資源的任何方法