ASP.Net. Как включить встроенный файл JavaScript из другого проекта?

У меня есть два проекта, один — это библиотека управления, а другой — мой основной проект. Из библиотеки элементов управления в настоящее время я использую пользовательский элемент управления и некоторые файлы css, встроенные в библиотеку элементов управления.

Я могу использовать встроенные файлы CSS в своем основном проекте, выполнив следующие действия в событии PreRender моего пользовательского элемента управления:

  // Register the default CSS resource
  string includeTemplate = "<link rel='stylesheet' text='text/css' href='{0}' />";
  string includeLocation = this.Page.ClientScript.GetWebResourceUrl(this.GetType(), "MyCompany.ControlLibrary.WebNotify.WebNotify.css");
  LiteralControl cssInclude = new LiteralControl(String.Format(includeTemplate, includeLocation));
  ((System.Web.UI.HtmlControls.HtmlHead)Page.Header).Controls.Add(cssInclude);

Я подумал, что тогда имеет смысл включить все мои файлы javascript аналогичным образом, поэтому я включил встроенный файл javascript, выполнив следующие действия:

  // Register the js
  string includeTemplate = "<script type='text/javascript' src='{0}'></script>";
  string includeLocation = this.Page.ClientScript.GetWebResourceUrl(this.GetType(), "MyCompany.ControlLibrary.Scripts.MyScript.js");
  LiteralControl jsInclude = new LiteralControl(String.Format(includeTemplate, includeLocation));
  ((System.Web.UI.HtmlControls.HtmlHead)Page.Header).Controls.Add(jsInclude);

Теперь все CSS работает отлично, однако мои функции JS выдают исключения Object Required при попытке их вызова.

Правильно ли я это делаю? Или есть лучший способ включить встроенный файл js из другой сборки в другой проект?


person djdd87    schedule 21.08.2009    source источник
comment
как выглядит запрос кода состояния ответа файла js? 404? 500?   -  person BigBlondeViking    schedule 21.08.2009
comment
Извини, что ты имеешь ввиду?   -  person djdd87    schedule 21.08.2009
comment
Если вы используете Firefox, установите FireBug (getfirebug.com), перейдите на свой сайт и на вкладке "Сценарий" FireBug, проверьте, каковы ответы и выходные данные вызовов вашего скрипта. Если вы используете IE8, нажмите F12, чтобы вызвать инструменты разработчика, и проверьте скрипт там.   -  person Zhaph - Ben Duguid    schedule 24.08.2009


Ответы (2)


Лично, как предлагали другие, используйте некоторые инструменты, такие как FireBug для Firefox, Fiddler или инструменты разработчика для Internet Explorer, чтобы проверить, какие вызовы отправляются на ваши серверы и какие ответы они отправляют обратно — это то, на что ссылается BigBlondeViking.

Я бы также проверил, что вы пометили файл JS как «сборка» в решении, а не по умолчанию «не предпринимать никаких действий».

Тем не менее, действительно существует более чистый способ добавления ресурсов встроенных скриптов, ClientScriptManager "RegisterClientScriptResource":

// Get a ClientScriptManager reference from the Page class.
ClientScriptManager cs = Page.ClientScript;

// Register the client resource with the page.
cs.RegisterClientScriptResource(rstype, 
     "MyCompany.ControlLibrary.Scripts.MyScript.js");
person Zhaph - Ben Duguid    schedule 24.08.2009

Кажется прекрасным; однако на данный момент я бы действительно использовал клиентские инструменты, чтобы определить, все ли туда попадает и используется (скрипач/то есть панель инструментов/firebug/и т. д.).

Если бы мне пришлось угадывать, я бы сказал, что ваш код работает, но любой браузер, который вы используете, игнорирует javascript из-за того, что тег скрипта не имеет закрывающего тега (т.е. <script></script> opposed to <script />); по какой-то причине некоторые браузеры придирчивы к этому

person John    schedule 21.08.2009
comment
Я изменил теги скрипта в соответствии с вашим предложением, и вдруг понял, что сделал неправильно... однако это не исправило ситуацию. - person djdd87; 21.08.2009