繁体   English   中英

母版页中的ResolveUrl问题

[英]ResolveUrl Problem in Master Page

好的,

我知道这很奇怪,但是当我将此代码放在master.page中的<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标签中,例如:

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

因此,您遇到第一个问题的原因是因为链接标记具有runat="server"这告诉asp.net将其视为服务器控件,而不是文字。 因为它是服务器控件,所以scriptlet标记( <%= %> )实际上并没有做任何事情,因为它是服务器控件属性,因此将其视为文本。

有两种处理方法。 首先是向ClientScriptManager注册启动脚本。 这会将您的链接标记放入体内,这是Microsoft所说的方式,但从美学上讲并不是很好。 另一种选择是在您的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标签的结尾呈现为所需的内容。 问题在于这需要更多的工作,并且最好避免在后面的代码中胡乱使用控件集合。

这可能会使它变得比需要的复杂。 您是否尝试过在图标路径中仅使用~并设置<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>

相关SO答案 :网站图标未显示

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM