Переменная совместного использования нескольких экземпляров ScriptControl - PullRequest
0 голосов
/ 20 октября 2010

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

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

1 Ответ

0 голосов
/ 20 октября 2010

Кажется, это работает хорошо:

        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") %> где угодно.Это может быть то, где вы фактически используете его или добавляете к прототипу объекта.

...