这是一个错误吗?或者它是ASP.NET 4(或MVC 2)中的设置?

Joh*_*zen 6 asp.net asp.net-mvc asp.net-mvc-2

我刚刚开始试用T4MVC,我喜欢消除魔法字符串的想法.

但是,当我尝试在我的样式表的母版页上使用它时,我得到了这个:

<link href="<%: Links.Content.site_css %>" rel="stylesheet" type="text/css" />
Run Code Online (Sandbox Code Playgroud)

这样的结果:

<link href="&lt;%: Links.Content.site_css %>" rel="stylesheet" type="text/css" />
Run Code Online (Sandbox Code Playgroud)

而这些渲染正确:

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

看来,只要我在代码段中有双引号,它就可以工作.但是当我把其他任何东西放在那里时,它逃脱了领先的"不到".

这是我可以关闭的东西吗?这是一个错误吗?


编辑:

这并没有发生了<script src="..." ... />,也不会发生了<a href="...">.


编辑2:

最小的情况:

<link href="<%: string.Empty %>" />
Run Code Online (Sandbox Code Playgroud)

VS

<link href="<%: "" %>" />
Run Code Online (Sandbox Code Playgroud)


编辑3:

我有一个解决方法,我已经实现了一个HtmlHelper扩展,以便我可以这样做:

<%: Html.StyleSheet(Links.Content.site_css) %>
Run Code Online (Sandbox Code Playgroud)

我更喜欢对intellisens的支持,所以我实际上会坚持这一点.现在,我只是想解决这个问题.

The*_*ter 2

对我来说这看起来像是一个错误,编译后的输出是:

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;
}
Run Code Online (Sandbox Code Playgroud)

这似乎只发生在控件位于head runat="server"