仅在某些页面上重定向时出错

时间:2012-11-02 09:21:26

标签: asp.net

我的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 。

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

3 个答案:

答案 0 :(得分:1)

更好地练习使用波形符号而不是相对路径,但是使用这个符号需要使用

runat="server" 
标签中的

。 你用这种方法得到的其他错误是什么?

修改

<li><a runat="server" href="~/Account/Login.aspx">Employee Login</a></li>

答案 1 :(得分:1)

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

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

您可以使用文字控件和Literal1.Text ='HTML菜单代码'

答案 2 :(得分:0)

使用Page.ResolveURL(“〜/ Account / Login.aspx”)更容易,更实用的解决方案。我将Page.ResolveURL用于菜单中的所有链接,现在它可以无缝地工作