我刚刚开始尝试使用T4MVC,我喜欢消除魔法字符串的想法。
但是,当我尝试在我的主页面上使用它来获取样式表时,我得到了这个:
<link href="<%: Links.Content.site_css %>" rel="stylesheet" type="text/css" />
这样的结果:
<link href="<%: 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" />
看来,只要我在代码段中有双引号,它就可以工作。但是当我把其他东西放在那里时,它逃脱了领先的“不到”。
这是我可以关闭的吗?这是一个错误吗?
<script src="..." ... />
不会发生,<a href="...">
也不会发生 。
最小的案例:
<link href="<%: string.Empty %>" />
VS
<link href="<%: "" %>" />
<小时/>
我有一个解决方法,我已经实现了一个HtmlHelper扩展,以便我可以这样做:
<%: Html.StyleSheet(Links.Content.site_css) %>
我更喜欢对intellisens的支持,所以我实际上会坚持这一点。现在,我只是想解决这个问题。
答案 0 :(得分: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;
}
这似乎只有在控件位于head runat="server"
答案 1 :(得分:0)
我认为问题是冒号。请尝试使用<link href="<%= string.Empty %>" />
代替<link href="<%: string.Empty %>" />.
答案 2 :(得分:0)
根据Gu,<%:
是ASP.NET 4.0的一项功能。尝试定位4.0,看看它是否仍然失败。
答案 3 :(得分:0)
从头标记中删除runat =“server”属性。
服务器生成的头标记将为任何链接标记呈现HtmlLink标记。 href的内容取自源和urlencoded。这不适用于脚本包含。
修改强>
如果您无法从头标记中删除runat =“server”,请编写如下链接标记:
<link href="<%= ... %>" runat="" />
以下是错误“runat属性必须具有值服务器”
<link href="<%= ... %>myfile.css" runat="" />