2010-02-04 5 views
1

У меня есть пользовательский элемент управления, в котором есть webresource.WebResource пуст страницы

webresource является Java-файлом и у меня есть возможность сборки на файл JavaScript установлен в «Embedded Resource» и у меня есть следующие строки кода в моем AssemblyInfo.cs для проекта моего пользовательского элемент управления находится в:

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

В моем таможенном контроле, у меня есть следующие строки в перекрываться событие загрузки:

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

К сожалению, независимо от того, что я делаю, webresource, который я возвращаю, пуст, и поэтому никакие функции в моем файле javascript не включены/не определены на моей странице потребления.

Я пропустил что-то очевидное?

ответ

1

Ну, оказывается, что хотя мой javascript находился в «пространстве имен» SOM.DCO.CustomWebControls, он находился внутри папки под названием «MultiSelectGridView». Поэтому я изменил все ссылки на него с SOM.DCO.CustomWebControls.MultiSelectGridView.js до SOM.DCO.CustomWebControls.MultiSelectGridView.MultiSelectGridView.js, и теперь это работает.

1

Единственное, с чем я столкнулся в прошлом, это передать неправильный Type при вызове GetWebResourceUrl. Вы должны иметь TypeType, который исходит от той же Ассамблеи, что и встроенный ресурс.

Использование this.GetType() может представлять проблемы вложения ресурсов (as described by Rick Strahl)

Все остальное выглядит нормально для меня.

3

У меня просто была такая же проблема, и это был кошмар, чтобы выяснить, исправить. Я, наконец, понял это, благодаря this link.

Если вы щелкните правой кнопкой мыши по имени своего решения в обозревателе решений и выберите «свойства», вы увидите текстовое поле «По умолчанию пространство имен».

Это значение пространства имен по умолчанию должно быть таким же, как пространство имен, которое вы помещаете перед своим веб-ресурсом.

Итак, если по умолчанию в ваших свойствах используется только «SOM» или только «CustomWebControls», вам необходимо изменить его на «SOM.DCO.CustomWebControls».

Затем использовать тот же полное пространство имен в вашей. «Сборки: WebResource» и ваш призыв к RegisterClientScriptInclude (или RegisterClientScriptResource, или любой другой метод, который вы используете, чтобы прикрепить веб-ресурс

Смежные вопросы