好吧,

我知道这很奇怪但是当我把这个代码之间 <head runat="server"></head> 在掌握。网页,这是怎么渲染成:

 <link id="ctl00_Link1" rel="shortcut icon" href="../%3C%25%20ResolveUrl(%22~/Resources/Pictures/Shared/Misc/favicon.ico%22);%20%25%3E" type="image/x-icon" />

它没有看到的东西asp.net 需要照顾。

这是原始代码:

<link id="Link1" rel="shortcut icon" href='<%=ResolveUrl("~/Resources/Pictures/Shared/Misc/favicon.ico") %>' type="image/x-icon" runat="server" />

基本上Asp.Net 并不需要护理的代码下面,呈现为一个正常html。

我怎么能得到超过这个问题?

在此先感谢...

编辑和解决

好人,是没有办法这样做。我终于想通了是因为ResolveUrl或ResolveClientUrl是唯一的工作对这些如下:

@import '<%= ResolveUrl("~/Resources/Styles/MainMaster/MainDesign.css") %>';
<script src='Resources/Scripts/Libraries/jquery-1.4.2.js' type="text/javascript"</script>

它是太文本链接,所以你需要把链接元素在身体标记,如:

<body>
    <link id="iconOne" rel="shortcut icon" type="image/x-icon" href="Resources/Pictures/Shared/Misc/favicon.ico"/>
    <link id="iconTwo" rel="icon" href='Resources/Pictures/Shared/Misc/favicon.ico' type="image/ico" />
</body>
有帮助吗?

解决方案

所以,你遇到了你的第一个问题的原因是因为link标签有runat="server"这告诉asp.net把它当作一台服务器控制,而不是文字。因为它的服务器控件,您的小脚本标签(<%= %>)是不是真的做任何事情,因为它的服务器控件的属性是把它当作文字文本。

有两种方法来处理它。首先是 ClientScriptManager 来登记启动脚本。这将使你的链接标签的身体,这是微软说,你应该做的方式,但在美学上是不是很好的内部。另一种选择是做这样的事情在你的Page_Load

var link = new HtmlGenericControl("link");
link.Attributes.Add("rel", "shortcut icon");
link.Attributes.Add("src", ResolveUrl("~/Resources/Pictures/Shared/Misc/favicon.ico"));
link.Attributes.Add("type", "image/x-icon");

Header.Controls.Add(link);

这编程建立了控制,然后将其添加到控件集合在头上,这会使你想在头标签的到底是什么。这个问题是它的多一点的工作,它能够更好地避免在后面级代码控制的集合瞎搞,如果你能摆脱它。

其他提示

这可能会使得它有点复杂得多,它需要。你有没有试过只用 ~ 在图标的路径,设置 <head runat="server">?

例如:

<head runat="server">
    ...
    <link rel="icon" href="~/Resources/Pictures/Shared/Misc/favicon.ico" 
        type="image/x-icon" />
    <link rel="shortcut icon" href="~/Resources/Pictures/Shared/Misc/favicon.ico"
        type="image/x-icon" />
    ...
</head>

有关使答案: 图标不表示

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top