2011-10-08 46 views
3

也许它是一个愚蠢的问题,但我在Visual Studio 2010中这个问题:Asp.net定界符<%替换为头标记中的<%?

在我的母版页,我这个代码:

<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 %>工作正常。

任何人从来没有经历过这一点,并解决?

UPDATE:

如果我在头标记推迟RUNAT = “服务器”,它的工作原理。但我需要它。

编辑:

所有这些方法的工作,但问题是缺乏设计师的支持?

+0

检查其主题相关http://stackoverflow.com/questions/1874875/link-rel-stylesheet-type-text-css-href-resolveurl -CSS试验CSS – Crimsonland

+0

我读过,但它已经错过了等号(=),所以并不适用于这种情况下 –

回答

2

现在,我已经发现这个workaroud;仍然在寻找这种行为的原因。

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

很长的路要走:http://forums.asp.net/t/1274180.aspx –

3

你招的解释:

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

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

你的伎俩欺骗编译器,这是不坏的。

我相信它做同样的事情meta标签,(HtmlMeta

2

这应该工作了。

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

我通常使用ResolveUrl

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