0

Site.Master ファイルにメニューがあり、そのコードは次のとおりです。

<nav>
    <ul id="css3menu1" class="topmenu">
        <li class="topfirst"><a href="Default.aspx"><span>Home</span></a>
            <ul>
               <li><a href="../Account/Login.aspx">Employee Login</a></li>
               <li><a href="../Account/Login.aspx">Customer/Distributor Login</a></li>
            </ul>
        </li>
        <li class="topmenu"><a href="#"><span>Products</span></a>
            <ul>
                <li><a href="Page1.aspx">Page1</a></li>
                <li><a href="Page2.aspx">Page2</a></li>
                <li><a href="Page3.aspx">Page3</a></li>
            </ul>
        </li>
        <li class="topmenu"><a href="InvestorInfo.aspx"><span>Investor Info</span></a>
            <ul>
                <li><a href="InvestorInfo.aspx">Quarterly Filings</a></li>
                <li><a href="InvestorInfo.aspx">Press Releases</a></li>
                <li><a href="#">Investor Updates</a></li>
                <li><a href="#">Company Presentations</a></li>
                <li><a href="BioPages/ManagementTeam.aspx">Management Team</a></li>
            </ul>
        </li>
    </ul>
</nav>

サイトのログイン ページにアクセスしても、ログインせずにメニューのリンクに移動しようとすると、/Account/Page1.aspx にリダイレクトしようとしているという 404 エラー ページが表示されます。

Site.Master からのパスが明らかに Page1.aspx のみである場合、「Account/」がそのパスに挿入されるのはなぜですか。~/hrefをページ名の前後に変更しようとしました../が、さまざまな種類のエラーが発生しましたが、ログインページ (アカウントフォルダーにある) でのみ適切にリダイレクトされました

4

3 に答える 3

1

Login.aspx ページにアクセスすると、「Account」フォルダ ディレクトリに配置されます。メニューの他のリンクにアクセスしようとすると、ページが存在する場合はまず現在の「アカウント」ディレクトリをチェックし、存在しない場合はエラーをスローしてページを表示します。

これには動的メニューが必要なことをお勧めします。「アカウント」ディレクトリ ページにアクセスすると、「アカウント」ディレクトリとリンクに従ってメニューが変更されます。

リテラル コントロールと Literal1.Text = 'HTML メニュー コード' を使用できます。

于 2012-11-02T09:55:04.807 に答える
1

相対パスの代わりにチルダ記号を使用することをお勧めしますが、これを使用する必要があります

runat="server" 

タグで。そのアプローチで得た他のエラーは何ですか?

編集

<li><a runat="server" href="~/Account/Login.aspx">Employee Login</a></li>
于 2012-11-02T09:32:11.260 に答える
0

Page.ResolveURL("~/Account/Login.aspx") を使用する方がはるかに簡単で、より実用的なソリューションでした。メニューのすべてのリンクに Page.ResolveURL を使用しましたが、シームレスに機能するようになりました

于 2012-11-07T16:22:12.300 に答える