URL изображения темы Перебазирование asp.net
Я реализую темы, чтобы можно было переименовать существующий веб-сайт (логотипы, цвета, изображения и т. Д.) В зависимости от запрашивающего URL. Я понимаю, как это сделать, и скины работают нормально, за исключением некоторых исключений, связанных с URL-адресами изображений.
В частности, у меня есть свойство управления, что это невозможно для кожи. До реализации темы это выглядело так:
<DisplayImageChecked Url="~/Images/BobIcon-Green.png" />
Очевидно, что не будет работать с темами. Поэтому после долгих проб и ошибок и чтения я пытаюсь реализовать это так:
<DisplayImageChecked Url="~/AppThemes/<%= Page.Theme %>/Images/BobIcon-Green.png" />
Однако это не работает. Сгенерированный HTML выглядит так:
<img src="AppThemes/%3C%25=%20Page.Theme%20%25%3E/Images/BobIcon-Green.png"/>
Любые указатели в правильном направлении будут оценены.
Дэвид
4 ответа
Используйте синтаксис привязки внутри элемента управления с привязкой к данным (смотрите двойные и двойные кавычки):
<DisplayImageChecked Url='<%# "~/AppThemes/" + Page.Theme + "/Images/BobIcon-Green.png" %>' />
Вы также можете использовать "Images/BobIcon-Green.png" в качестве URL. ASP позаботится о разрешении URL для каталога в вашей теме.
Вот правильный способ выполнить вашу задачу:
Украсьте ваше свойство атрибутом UrlProperty, и ASP.NET автоматически переведет ваш частичный URL-адрес в правильный URL-адрес.
Использование "~/AppThemes/" + Page.Theme + "/Images/BobIcon-Green.png" поможет, но это НЕ предпочтительный способ, потому что вам нужно делать всю работу самостоятельно, и всегда полезно оставлять все работа в ASP
Есть ли причина, по которой вы не можете просто сохранить изображения в той же папке, что и тема? Если вы поместите изображение, скажем, например: "image.gif", в папку темы, то вы можете просто обратиться к нему прямо в вашей теме.
ImageUrl="image.gif"
Это разрешится очень хорошо, когда вы примените этот скин к элементу управления на своей странице. Также намного проще, чем пытаться сделать динамический URL.