0

私は新人のWeb開発者で、C#、VS2005、および.masterファイルを使用してサイトを作成しています。

サイト内の各ページにディレクトリ構造内の現在の場所を認識させて、各ページに適切なナビゲーションリンクを表示できるようにします。

現在のページに関連するディレクトリ構造を検索するために、.masterファイルに次のコードを記述しました。localhost / mysiteのテストサーバーでは正常に機能しますが、公開サイト(www.example.coom)にプッシュすると、コードが壊れます。

問題は「intdepth=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 に答える