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

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

3 ответа

Решение

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

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

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

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

Таким образом, если пространство имен по умолчанию в ваших свойствах - только "SOM" или только "CustomWebControls", вам нужно изменить его на "SOM.DCO.CustomWebControls".

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

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

С помощью this.GetType() могут представлять проблемы при встраивании ресурсов ( как описано Риком Штролем)

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

Другие вопросы по тегам