Это ошибка?Или это настройка в ASP.NET 4 (или MVC 2)? - PullRequest
6 голосов
/ 21 декабря 2010

Я только недавно начал опробовать T4MVC, и мне нравится идея устранения волшебных строк.

Однако, при попытке использовать его на главной странице для моих таблиц стилей, я получаю следующее:

<link href="<%: Links.Content.site_css %>" rel="stylesheet" type="text/css" />

рендеринг так:

<link href="&lt;%: Links.Content.site_css %>" rel="stylesheet" type="text/css" />

В то время как они правильно отображают:

<link href="<%: Url.Content("~/Content/Site.css") %>" rel="stylesheet" type="text/css" />
<link href="<%: Links.Content.site_css + "" %>" rel="stylesheet" type="text/css" />

Похоже, что пока у меня есть двойные кавычки внутри сегмента кода, это работает. Но когда я помещаю туда что-то еще, оно ускользает от ведущего "меньше чем".

Это то, что я могу отключить? Это ошибка?

<Ч />

Edit:

Это не происходит для <script src="..." ... />, и не происходит для <a href="...">.

<Ч />

Редактировать 2:

Минимальный регистр:

<link href="<%: string.Empty %>" />

против

<link href="<%: "" %>" />

<ч />

Редактировать 3:

У меня есть обходной путь, я реализовал расширение HtmlHelper, чтобы я мог сделать это:

<%: Html.StyleSheet(Links.Content.site_css) %>

Мне больше нравится поддержка intellisens, так что я действительно буду придерживаться этого. Сейчас я просто пытаюсь устранить ошибку.

Ответы [ 4 ]

2 голосов
/ 21 декабря 2010

Мне кажется, это ошибка, скомпилированный вывод для которой:

private global::System.Web.UI.HtmlControls.HtmlLink @__BuildControl__control5() {
    global::System.Web.UI.HtmlControls.HtmlLink @__ctrl;            
    @__ctrl = new global::System.Web.UI.HtmlControls.HtmlLink();
    @__ctrl.Href = "<%: String.Empty %>";
    ((System.Web.UI.IAttributeAccessor)(@__ctrl)).SetAttribute("rel", "stylesheet");
    ((System.Web.UI.IAttributeAccessor)(@__ctrl)).SetAttribute("type", "text/css");
    return @__ctrl;
}

Это, кажется, происходит только тогда, когда элемент управления находится внутри head runat="server"

0 голосов
/ 24 августа 2011

Удалите атрибут runat = "server" из тега head.

Сгенерированный сервером тег заголовка будет отображать тег HtmlLink для любого тега ссылки. Содержание href взято из источника и urlencoded. Это не сделано для скриптовых включений.

EDIT:
Напишите ваши теги ссылок, как показано ниже, если вы не можете удалить runat = "server" из тега head:

<link href="<%= ... %>" runat="" />

Ниже выдается сообщение об ошибке «Атрибут runat должен иметь значение server»

<link href="<%= ... %>myfile.css" runat="" />
0 голосов
/ 21 декабря 2010

Согласно Gu , <%: является функцией ASP.NET 4.0.Попробуйте настроить таргетинг на 4.0 и посмотрите, не сработает ли он.

0 голосов
/ 21 декабря 2010

Я думаю, что проблема в толстой кишке. Попробуйте <link href="<%= string.Empty %>" /> вместо <link href="<%: string.Empty %>" />.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...