Asp.net分隔符<%已替换为头标记中的<%?

时间:2011-10-08 08:51:45

标签: asp.net master-pages delimiter head

也许这是一个愚蠢的问题,但我在Visual Studio 2010中遇到了这个问题:

在我的主页中我有这段代码:

<head runat="server">

    <title>App Title</title>
    <asp:ContentPlaceHolder ID="head" runat="server">
    </asp:ContentPlaceHolder>
    <link href="<%= App.RootPath %>Css/style.css" rel="stylesheet" type="text/css" />
</head>

出于某种奇怪的原因,<%在运行时使用&lt;%

进行了更改

<%= App.RootPath %>如果放在head标签之外的任何地方,则工作正常。

任何人从未体验过这一点并得到解决?

更新:

如果我在head标签中放下runat =“server”,它就可以了。但我需要它。

编辑:

所有这些方法都有效,但问题是缺乏设计师支持?

5 个答案:

答案 0 :(得分:5)

你的诀窍解释:

<link <%= "href='" +App.RootPath +"Css/style.css'" %> rel="stylesheet" type="text/css" />

找到答案生成编译异常。将App.RootPath更改为App.RootPaths..,然后导航到源代码(它将显示在错误页面中)。如果编译器匹配<link href='' rel='' >之类的东西,那么它将生成代码以构建相应的HtmlLink实例。所以这就是为什么它将<%=解析为文字字符串,然后对其进行编码。

你的技巧欺骗了编译器,这一点都不错。

我相信它对元标记做了同样的事情,(HtmlMeta

答案 1 :(得分:2)

现在,我发现了这个工作;仍然在寻找这种行为的原因。

<link <%= "href=" +App.RootPath +"Css/style.css" %> rel="stylesheet" type="text/css" />

答案 2 :(得分:2)

这也应该有用。

<link href="<%= App.RootPath + "Css/style.css" %>" rel="stylesheet" type="text/css"/>

答案 3 :(得分:1)

我通常使用ResolveUrl

<link href='<%= Page.ResolveUrl("~Css/style.css") %>' rel="stylesheet" type="text/css"/>

答案 4 :(得分:-1)

**problem**
 <link rel="canonical" href="http://www.kayserianadoluhaber.com.tr/haber/<%=kanonikal%>" />

**solved**
 <link rel="canonical" href="http://www.kayserianadoluhaber.com.tr/haber/<%=kanonikal+""%>" />