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