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>

当我进入网站登录页面但未登录并尝试进入菜单中的任何链接时,我收到一个 404 错误页面,提示我正在尝试重定向到 /Account/Page1.aspx。

当来自 Site.Master 的路径显然只是 Page1.aspx 时,为什么“Account/”会被插入到该路径中。我尝试将页面名称的 href 更改为~/和前面../,但这会产生不同类型的错误,尽管它仅在登录页面(位于帐户文件夹中)时正确重定向

4

3 回答 3

1

更好的做法是使用波浪号而不是相对路径,但是您需要使用

runat="server" 

在标签中。你用这种方法遇到的其他错误是什么?

编辑

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

当您访问 Login.aspx 页面时,它将位于“Account”文件夹目录中。当您尝试访问菜单中的其他链接时,如果页面存在,它将首先检查当前的“帐户”目录,否则将显示页面,否则会引发错误。

我建议您为此需要动态菜单。当您访问“帐户”目录页面时,它将根据“帐户”目录和链接更改菜单。

您可以使用文字控制和 Literal1.Text = 'HTML Menu Code'

于 2012-11-02T09:55:04.807 回答
0

使用 Page.ResolveURL("~/Account/Login.aspx") 更容易,更实用的解决方案。我对菜单中的所有链接都使用了 Page.ResolveURL,现在它可以无缝运行

于 2012-11-07T16:22:12.300 回答