Как в ASP.NET Webforms заставить мой элемент управления работать в атрибуте href тега ссылки? - PullRequest
1 голос
/ 02 сентября 2011

У меня есть ситуация, когда мне нужно динамически загрузить префикс URL.

Я написал быстрый элемент управления для обработки этого, и он работает для следующего экземпляра:

<script type="text/javascript" src='<gbn:AdminPath runat="server" id="Id1" />Rest/Of/Path.js'></script>

Но следующий случай (на той же странице aspx) не работает:

<link rel="stylesheet" href='<gbn:AdminPath runat="server" id="Id2" />/css/styles.css'>

Это отображается в браузере как:

<link rel="stylesheet" href="&lt;gbn:AdminPath runat=&quot;server&quot; id=&quot;Id2&quot; />/css/styles.css" />

Я пробовал разные вещи, но я не могу заставить работать теги. Есть предложения?

Спасибо

Ответы [ 2 ]

2 голосов
/ 02 сентября 2011

Проблема здесь в том, что он обрабатывает <link> элементы в разделе <head>, как будто они являются серверными элементами управления.Я полагаю, что он делает это, чтобы вы могли использовать относящиеся к приложению URL-адреса (например, «~ / myfolder / file.css») и разрешить их для вас.Тем не менее, он не дает такой же обработки тегам <script>.

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

Чтобы обойти это, у вас есть несколько вариантов, один из которых описан выше в TheGeekYouNeed.

Если вы все еще хотите сделать это встроенным с открытым методом, вы можете,но вы должны встроить все значение свойства в ваш код следующим образом:

<link rel="stylesheet" href='<%= string.Format("{0}/css/styles.css", GetAdminPath() %>' type="text/css" />
0 голосов
/ 02 сентября 2011

Добавьте код позади

пример:

// Define an HtmlLink control.
HtmlLink myHtmlLink = new HtmlLink();
myHtmlLink.Href = GetAdminPath() + "/pathtocss.css";
myHtmlLink.Attributes.Add("rel", "stylesheet");
myHtmlLink.Attributes.Add("type", "text/css");

// Add the HtmlLink to the Head section of the page.
Page.Header.Controls.Add(myHtmlLink);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...