【发布时间】:2012-01-14 07:54:00
【问题描述】:
我正在开发一个应用程序并且我以编程方式生成菜单,因为我在本地机器上工作我的网站路径就像
http://localhost:55954/VirtualPathName/Default.aspx
下面是从数据库生成菜单的代码
String sHost, sHostWithPort, sAbsolutePath, sApplicationPath,sAbsoluteUri,sPathAndQuery,sPageID, sLangCode;
sHost = "http://"+HttpContext.Current.Request.Url.Host;
sHostWithPort = "http://" + HttpContext.Current.Request.Url.Authority;
sAbsolutePath = HttpContext.Current.Request.Url.AbsolutePath;
sApplicationPath = HttpContext.Current.Request.ApplicationPath;
sAbsoluteUri = HttpContext.Current.Request.Url.AbsoluteUri;
sPathAndQuery = HttpContext.Current.Request.Url.PathAndQuery;
//Create Top Menu
StringBuilder sb = new StringBuilder();
if (dsMenu != null && dsMenu.Tables.Count > 0 && dsMenu.Tables[0].Rows.Count > 0)
{
for (int i = 0; i < dsMenuRowCount; i++)
{
sb.Append("<div class='divlink' href='" + dsMenu.Tables[0].Rows[i]["PageInternalLinkURL"] + "?PageId=" + dsMenu.Tables[0].Rows[i]["PageId"] + "&Language=" + sLangCode + "'>" + dsMenu.Tables[0].Rows[i]["PageName"] + "</a></div>");
}
}
ltrMenu.Text = sb.ToString();
代码工作正常,除了当我必须将代码上传到网络服务器时,我必须将 for 循环中的以下语句修改为
sb.Append("<div class='divlink' href='" + sHostWithPort + dsMenu.Tables[0].Rows[i]["PageInternalLinkURL"] + "?PageId=" + dsMenu.Tables[0].Rows[i]["PageId"] + "&Language=" + sLangCode + "'>" + dsMenu.Tables[0].Rows[i]["PageName"] + "</a></div>"
我必须从网站 URL 中取出 sApplicationPath,这样 URL 就会像
http://www.xyz.com/Default.aspx
我试图解决这个问题,但到目前为止我还没有解决。感谢代码的任何帮助,这样我在网络服务器上上传文件时就不必更改路径。
注意:- 我真傻。我找到了解决方案。谢谢各位
我刚刚删除了以下部分。+ sHostWithPort + sApplicationPath + "/"
谢谢大家,请不要将其标记为 -ve 有时我们会犯这样的错误。我不确定如何删除问题。
【问题讨论】:
-
您是否有充分的理由不能只使用相对 URL 作为链接?
-
上传问题后它击中了我,它起作用了,我不确定删除问题是否会让我 -Ve 所以我用答案修改了问题,如果有人已经读过它,我会道歉跨度>
-
@StudentDubai 您可以将答案放在答案部分,让用户查看如何修复并确保用户知道问题已得到解答。
标签: c# asp.net virtual-directory