2010-04-06 78 views
2

好吧,RESOLVEURL问题在母版页

我知道这很奇怪,但是当我在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> 
    <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> 

回答

4

所以,你遇到你的第一个问题的原因是因为链接标记有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); 

这建立了编程控制,然后将其添加到控件集合在头上,这会使你想在头到底是什么标签。与此相关的问题是它的工作量更大一些,如果可以避开它,它最好避免在代码后面的控制集合上进行混淆。

+0

我想第二个已经,但它并没有改变任何东西。控制渲染器以最终的方式呈现它。是的,我只是把链接元素放在''标签下面并且工作。 – Tarik 2010-04-06 23:50:04

3

这可能会使它比需要的复杂一点。您是否尝试过简单地在图标路径中使用~,并设置<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回答相关:Favicon Not Showing