Многочисленные экземпляры ScriptControl переменная обмена

StackOverflow https://stackoverflow.com/questions/3981261

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top