簡體   English   中英

為什么放在子文件夾中的用戶控件中的asp:HyperLink.NagigateUrl包含此子文件夾?

[英]Why asp:HyperLink.NagigateUrl in user control, placed in sub-folder, contains this sub-folder?

~/Folder1/UserControl1.ascx:

<%@ Control Language="C#" CodeBehind="WebUserControl1.ascx.cs" Inherits="WebApplication1.WebUserControl1" %>
<asp:HyperLink runat="server" NavigateUrl="?foo=bar">HyperLink1</asp:HyperLink>

~/UserControl2.ascx:

<%@ Control Language="C#"CodeBehind="WebUserControl2.ascx.cs" Inherits="WebApplication1.WebUserControl2" %>
<asp:HyperLink runat="server" NavigateUrl="?foo=bar">HyperLink2</asp:HyperLink>

結果:

http://localhost/Folder1/?foo=bar

http://localhost/?foo=bar

為什么會發生?

如果您在路徑的開頭沒有/或〜,則將其視為相對於CURRENT位置。

從用戶控件來看,當前位置是控件的位置。

鏈接是相對於用戶控件目錄解析的,它們實際上調用ResolveClientUrl(); 在內部,所以您會看到相同的行為。

來自MSDN的說明:

此方法返回的URL相對於包含在其中實例化控件的源文件的文件夾。 繼承此屬性的控件(例如UserControl和MasterPage)將返回相對於該控件的完全限定的URL。

在后面的代碼中使用Page.ResolveClientUrl()解析URL將解決此問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM