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()
могут представлять проблемы при встраивании ресурсов ( как описано Риком Штролем)
Все остальное выглядит хорошо для меня.