Asp.net 分隔符 <% 替换为 <% 在 head 标记中?

发布于 2024-12-09 01:59:16 字数 663 浏览 1 评论 0 原文

也许这是一个愚蠢的问题,但我在 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>

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

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

有人从来没有经历过这个并解决过吗?

更新:

如果我在 head 标签中关闭 runat="server" ,它就可以工作。但我需要它。

编辑:

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

Maybe its a stupid question, but i'm having this issue in Visual Studio 2010:

in my Master page i've this code:

<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>

for some strange reason the <% is changed at runtime with <%

<%= App.RootPath %> works normal if put anywhere outside head tag.

Anyone has never experienced this and resolved?

UPDATE:

If i put off runat="server" in head tag, it works. But i need it.

Edit:

All of these methods work, but the problem is lack of designer support?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

那一片橙海, 2024-12-16 01:59:16

对你的技巧的解释:

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

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

你的伎俩欺骗了编译器,这一点也不坏。

我相信它对元标记也有同样的作用,(HtmlMeta

The explanation for your trick:

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

To find the answer generate a compilation exception. Change App.RootPath to App.RootPaths.., then navigate to the source code (it will be shown in the error page). If the compiler matches something like <link href='' rel='' > then it will generate the code to build a corresponding HtmlLink instance. So this is why it parses <%= as a literal string and after that it encodes it.

Your trick cheats the compiler, which is not bad at all.

I believe it does the same thing for meta tags, (HtmlMeta)

吃兔兔 2024-12-16 01:59:16

现在,我找到了这个解决方法;仍在寻找这种行为的原因。

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

For now, i've found this workaroud; still searching for the reason of this behaviour.

<link <%= "href=" +App.RootPath +"Css/style.css" %> rel="stylesheet" type="text/css" />
世俗缘 2024-12-16 01:59:16

这也应该有效。

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

This should work too.

<link href="<%= App.RootPath + "Css/style.css" %>" rel="stylesheet" type="text/css"/>
倾`听者〃 2024-12-16 01:59:16

我通常使用 ResolveUrl

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

I normally use ResolveUrl:

<link href='<%= Page.ResolveUrl("~Css/style.css") %>' rel="stylesheet" type="text/css"/>
冬天的雪花 2024-12-16 01:59:16
**problem**
 <link rel="canonical" href="http://www.kayserianadoluhaber.com.tr/haber/<%=kanonikal%>" />

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

**solved**
 <link rel="canonical" href="http://www.kayserianadoluhaber.com.tr/haber/<%=kanonikal+""%>" />
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文