Многочисленные экземпляры ScriptControl переменная обмена
-
09-10-2019 - |
Вопрос
у меня есть ScriptControl
который использует изображение в качестве встроенного ресурса и GetWebResourceUrl
Чтобы генерировать WebResource.axd
URL Я сейчас использую GetScriptDescriptors()
Чтобы отправить URL в объект JavaScript.
А ScriptControl
может быть в Repeater
, так что у вас может быть 20+ экземпляров. Все они используют одни и те же изображения (не настраиваемые через свойство), поэтому я хотел бы установить URL один раз в переменной и поделиться им. Я знаю, что мог бы зарегистрировать блок сценария с глобальной переменной, но хотел бы избежать этого, если это возможно. Есть ли способ установить переменную в рамках типа управления (Global -> Тип управления -> Экземпляр управления)?
Решение
Кажется, это работает хорошо:
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.
Редактировать: Другой вариант в AssemblyInfo.cs
Вы установили ссылку на JavaScript на WebResource(..., PerformSubstitution = true)
тогда ваш файл .js может иметь <%= WebResource("MyNamespace.enabled.png") %>
где угодно. Это может быть там, где вы на самом деле используете его или добавляете к прототипу объекта.