2010-10-20 3 views
0

У меня есть ScriptControl, который использует изображение в качестве встроенного ресурса и GetWebResourceUrl для создания URL-адреса WebResource.axd. В настоящее время я использую GetScriptDescriptors(), чтобы отправить URL-адрес объекту JavaScript.Множественные переменные экземпляра ScriptControl

ScriptControl может быть в Repeater, поэтому у вас может быть 20+ экземпляров. Все они используют одни и те же изображения (не настраиваемые через свойство), поэтому я хотел бы задать URL-адрес один раз в переменной и поделиться им. Я знаю, что могу зарегистрировать блок сценария с глобальной переменной, но хотел бы избежать этого, если это возможно. Есть ли способ установить переменную в пределах области типа управления (глобальный ->тип управления -> экземпляр управления)?

ответ

0

Это, кажется, работает хорошо:

 string imagesScript = String.Format(
      "MyNamespace.MyClass.prototype.imgDisabled = '{0}';" + 
      "MyNamespace.MyClass.prototype.imgEnabled = '{1}';", 
      Page.ClientScript.GetWebResourceUrl(typeof(MyClass), "MyNamespace.disabled.png"), 
      Page.ClientScript.GetWebResourceUrl(typeof(MyClass), "MyNamespace.enabled.png") 
     ); 

     Page.ClientScript.RegisterStartupScript(typeof(MyClass), "Images", imagesScript, true); 

Тогда в моем объекте я просто this.imgDisabled или this.imgEnabled, чтобы получить URL.

Edit: Другой вариант заключается в AssemblyInfo.cs установить ссылку JavaScript в WebResource(..., PerformSubstitution = true) то файл .js может быть <%= WebResource("MyNamespace.enabled.png") %> где угодно. Это может быть то, где вы на самом деле используете его или добавляете к прототипу объекта.

+0

Первый способ обеспечивает максимальную гибкость (например, разрешение настраиваемых URL-адресов изображений с использованием свойства), поэтому я использую это. –

Смежные вопросы