0

我是一个菜鸟 Web 开发人员,在 C#、VS2005 中创建一个站点并使用 .master 文件。

我想让站点中的每个页面都知道它在目录结构中的当前位置,这样我就可以在每个页面上显示适当的导航链接。

我在 .master 文件中编写了以下代码来查找相对于当前页面的目录结构。它在我位于 localhost/mysite 的测试服务器上运行良好,但是当我推送到位于 www.example.coom 的公共站点时,代码会中断。

我发现问题出在“int depth = h-2”行上。如果我将其更改为 h-1,它可以在 mysite.org 上运行。但这是一个丑陋的解决方案。

int nUrlSegments = this.Page.Request.Url.Segments.GetLength(0);

string[] thisPageArray = new string[nUrlSegments];

for (int i = 0; i < nUrlSegments; i++)
    thisPageArray[i] = Page.Request.Url.Segments[i].ToString();

int h = 0;
while (!thisPageArray[h].Contains(".aspx"))
    h++;

int depth = h - 2;

string pathToTop = "";

for (int j = 1; j <= depth; j++)
    pathToTop = pathToTop + "../";

string currentpage = thisPageArray[nUrlSegments-1].ToString();
string currentdir = "";

if (nUrlSegments > 1)
    currentdir = thisPageArray[nUrlSegments - 2].ToString();

找到每个页面在目录结构中的位置的更好方法是什么?

4

1 回答 1

0

我的一个非互联网世界的朋友帮我回答了这个问题。作为记录,这是我使用他的建议提出的解决方案:

string[] urlArray = Page.AppRelativeVirtualPath.Split('/');

int depth = urlArray.Length-2;


string pathToTop = "";

for (int j = 1; j <= depth; j++) pathToTop = pathToTop + "../";


string currentpage = urlArray[depth+1];   

string currentdir = "";
string backdir = "";
string twobackdir = "";

currentdir = urlArray[depth];
if (depth > 1) backdir = urlArray[depth-1];
if (depth > 2) twobackdir = urlArray[depth - 2];
于 2012-04-13T20:10:51.283 回答