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

У меня есть два проекта, один - контрольная библиотека, а другой - мой основной проект. Из библиотеки элементов управления в настоящее время я использую пользовательский элемент управления и некоторые 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 из другой сборки в другой проект?

Ответы [ 2 ]

3 голосов
/ 24 августа 2009

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

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

Однако, есть действительно более чистый способ добавления вложенных сценариев, метод 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");
3 голосов
/ 21 августа 2009

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...