2012-11-02 11 views
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錯誤頁面,它說我想重定向到/帳號/第一頁的鏈接的.aspx。

當Site.Master的路徑顯然只有Page1.aspx時,爲什麼會將「Account /」插入到該路徑中。我已經嘗試將href改爲~/../以前的頁面名稱,但是卻產生了不同類型的錯誤儘管它只在登錄頁面(在Account文件夾中)時才正確重定向

回答

0

這是容易得多,而且更實用的解決方案使用Page.ResolveURL(「〜/帳號/爲Login.aspx」)。我在菜單中的所有鏈接中使用了Page.ResolveURL,現在它可以無縫工作

1

更好的使用方法代字符符號代替相對路徑,但您需要在代碼中使用

runat="server" 

。 你用這種方法得到的其他錯誤是什麼?

編輯

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

例如,當在登錄頁面中將href標記中的路徑更改爲../Page1.aspx(對所有人完成時)但沒有登錄它會引導你到Page1.aspx,但當你嘗試導航到該菜單中的任何其他頁面時,你會再次遇到404錯誤。你在哪裏把runat =「server」放在導航標籤或每個li標籤中? – dinotom

+0

相應地修改了答案 – nat

1

當您訪問的Login.aspx頁面將在 '帳戶' 文件夾目錄。當您嘗試訪問菜單中的其他鏈接時,它將首先檢查當前的「帳戶」目錄,如果頁面存在,它將顯示頁面,否則會引發錯誤。

我建議你需要這個動態菜單。當您訪問「帳戶」目錄頁面時,將根據「帳戶」目錄和鏈接更改菜單。

您可以使用文字控制和Literal1.Text =「HTML菜單代碼」