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 не включена/не определена на моей потребляющей странице.

Я упускаю что-то очевидное?


person Amanda Kitson    schedule 04.02.2010    source источник


Ответы (3)


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

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

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

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

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

person Kristopher P.    schedule 03.03.2010

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

Использование this.GetType() может привести к проблемам с внедрением ресурсов (как описано Риком Стралом)

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

person Gordon Tucker    schedule 04.02.2010

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

person Amanda Kitson    schedule 05.02.2010