2010-04-06 77 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