我有一个ASP .NET网站,我有一个index.aspx页面和3个文件夹以及it.ie;我的Root有index.aspx,FolderA,FolderB,然后是FolderCommon(这3个是文件夹)。
我在FolderA和FolderB.FolderCommon中有几个asp页面存储js文件,CSS文件和公共代码等....
我有一个名为pageFooter的用户控件,在其中我保留了我页面的所有页脚链接。现在我的问题是当我在索引页面中使用相同的页脚用户控件时,它在根文件夹中可用,它不会为其他页面工作,因为路径不同。那么如何重新设计页脚用户控件,以便链接在所有页面中保持一致,而不管文件夹结构或它们出现的位置。
注意:我不想提供href属性的完整链接(例如:http://sitename/folderA/fielname.aspx)
任何想法???
答案 0 :(得分:3)
如果您正在执行asp:Hyperlink
,请始终以这种方式设置链接:
NavigateUrl="~/index.aspx"
NavigateURL="~/Folder/Default.aspx"
〜基本上意味着“根”
如果您正在进行常规<a href="">
,那么您需要根据文件的位置提供链接的相对路径。
因此,如果您在folderA中,并且想要引用根。
<a href="../index.aspx"></a>
答案 1 :(得分:0)
我们堆叠着同样的问题。我们使用绝对URL和以下实用程序将已存在的'〜'转换为正确的路径
public static class UrlUtils
{
/// <summary>
///This method returns the correct relative path when installing
/// the portal on a root web site instead of virtual directory
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
public static string GetApplicationPath(HttpRequest request)
{
string path = string.Empty;
if (request.ApplicationPath != "/")
path = request.ApplicationPath;
return path;
}
/// <summary>
/// Changes leading '~' to absolute URL including lead address e.g. http[s]://.... using
/// <see cref="HttpContext.Current" />.
/// </summary>
/// <param name="url">Relative or absolute URL.</param>
/// <returns>Absolute URL.</returns>
public static string ResolveAbsoluteUrl(string url)
{
if (url.StartsWith("~"))
{
HttpRequest request = HttpContext.Current.Request;
string _BaseUrl = new Uri(request.Url.ToString()).GetLeftPart(UriPartial.Authority);
string baseUrl;
baseUrl = _BaseUrl + GetApplicationPath(request);
return baseUrl + url.Substring(1);
}
return url;
}
答案 2 :(得分:0)
这(可能)你现在拥有的......
<a href="yourpage.aspx">Link</a>
您可以尝试:
<a href="/yourpage.aspx">Link</a>
你应该发现斜线有所不同!
答案 3 :(得分:0)
我不确定问题的确切性质,但您是否尝试过使用根相对路径?类似的东西:
"~/Folder/{control or page}"
您的代码示例会有所帮助。
答案 4 :(得分:0)
您可以查看控件所在页面的网址吗?
Dim currentURL as string = HttpContext.Current.Request.Url.ToString
知道了网址后,您应该知道要显示的链接。