好吧,
我知道这很奇怪,但是当我将这段代码放在<head runat="server"></head>中的master.page中时,它是这样呈现的:
<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>发布于 2010-04-06 23:03:24
因此,您遇到第一个问题的原因是链接标记有runat="server" --这告诉asp.net将其视为服务器控件,而不是文字控件。因为它是一个服务器控件,所以您的scriptlet (<%= %>)并没有真正做任何事情,因为它是一个服务器控件属性,所以它将它作为文字文本处理。
处理这个问题有两种方法。首先是通过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);这将以编程方式构建一个控件,然后将其添加到头部上的controls集合中,该集合将呈现为head标记末尾所需的内容。这方面的问题是,这是一个更多的工作,更好的避免与控制集合在后面的代码,如果你可以逃脱它。
发布于 2011-09-02 14:57:56
这可能会使事情变得比需要的复杂一些。您是否尝试过简单地在图标路径中使用~,并设置<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>相关答案:不显示
https://stackoverflow.com/questions/2588740
复制相似问题