2011-07-15 76 views
0

這個問題對我來說很難說好,所以請耐心等待。製作分節頁內容

在VS Express中,我創建了一系列網頁。在每一頁上,我都希望有一系列與給定用戶角色相關的功能。我想要我的所有html代碼都在一個單獨的aspx頁面上,但只有某些部分顯示(希望是異步),由url確定,通過導航欄中的下拉菜單鏈接到該鏈接。

我想用Rerouting(我認爲它叫)來保持我的網站更好,更具延展性,所以我可以稍後更改它們而不會破壞書籤等。

作爲一個用戶,在一個給定的角色中,我會將鼠標懸停在下拉菜單上,僅查看允許我執行的功能。點擊後,它會更新網址,如domain.com/form1,並只顯示與該操作相關的代碼塊(在aspx頁面中,並且最好是異步)。

我在想使用div和css「display:none;」屬性。我不確定哪種機制可以在各種功能的「視圖」之間切換,如果您願意的話。我應該使用ASP.NET的Javascript嗎?

我很抱歉這樣一個複雜的問題。我花了20多分鐘,這是我想要問的最好的方式。這甚至有很多意義嗎?如果是這樣,我是否在談論這一切都是錯誤的,還是我在正確的軌道上?我很欣賞任何刺傷。

乾杯;)

請仔細閱讀:我本來想用URL來做到這一點,但我發現,使用「多視圖」 ASP.NET控件是一個更好的解決方案,以我的困境。我只是想澄清我原來的問題和我的答案之間的任何假定的差異。就像我說的那樣,當時要弄清楚如何提問是一個困難的問題。 :)

回答

0

對於.NET,尤其是ASP.NET而言,我每天都在學習新事物。我最近發現了「多視圖」控件,這很棒。我用它來創建多個菜單欄(我知道這似乎很奇怪,但它是模擬不同的用戶「模式」或用戶組等),以及如我在我的原始提到的內容組合到一個頁面上題。然後我添加了一個輔助控件來切換菜單。下面是我如何實現我的多菜單欄控制一些示例代碼:P

<asp:MultiView ID="MenuView" runat="server"> 
    <!-- ADMIN GROUP --> 
    <asp:View ID="View0" runat="server"> 
     <asp:Menu ID="adminNav" runat="server" CssClass="menu" IncludeStyleBlock="False" Orientation="Horizontal"><DynamicMenuItemStyle /> 
      <Items> 
       <asp:MenuItem NavigateUrl="~/Reports.aspx" Text="View Reports" /> 
       <asp:MenuItem NavigateUrl="~/Approve.aspx" Text="Compliment hard-working employees" /> 
       <asp:MenuItem NavigateUrl="~/Promote.aspx" Text="Promote the qualified employees :)" /> 
       <asp:MenuItem NavigateUrl="~/Fire.aspx" Text="Send underlings home to starving children" /> 
      </Items> 
     </asp:Menu> 
    </asp:View> 
    <asp:View ID="View1" runat="server"> 
    <!-- USERS --> 
     <asp:Menu ID="userNav" runat="server" CssClass="menu" IncludeStyleBlock="False" 
      Orientation="Horizontal"><DynamicMenuItemStyle /> 
      <Items> 
       <asp:MenuItem NavigateUrl="~/Work.aspx" Text="Look productive" /> 
       <asp:MenuItem NavigateUrl="~/Complain.aspx" Text="Complain about boss" /> 
       <asp:MenuItem NavigateUrl="~/Praise.aspx" Text="Show appreciation for your awesome boss" /> 
      </Items> 
     </asp:Menu> 
    </asp:View> 
</asp:MultiView> 
<!-- MODE MENU --> 
<asp:DropDownList ID="modeMenu" runat="server" AutoPostBack="True" 
    ViewStateMode="Inherit" CssClass="modeMenu" EnableViewState="True"> 
    <asp:ListItem>Admin</asp:ListItem> 
    <asp:ListItem>User</asp:ListItem> 
</asp:DropDownList> 

代碼隱藏控制「MenuView」和「modeMenu」下拉列表中,我有作爲「的位置是:固定;左:5px的;頂:5px的;」在我的CSS,以防止它的方式。

Protected Sub mode(ByVal sender As Object, ByVal e As System.EventArgs) Handles modeMenu.Load, modeMenu.SelectedIndexChanged 
    Session.Add("mode", modeMenu.SelectedValue) //I use a session variable to maintain the state of the menu. 
    Select Case (modeMenu.SelectedValue) 
     Case "Admin" 
      MenuView.ActiveViewIndex = 0 
     Case "User" 
      MenuView.ActiveViewIndex = 1 
    End Select 
End Sub 

你有它。我希望別人覺得這很有用。乾杯;)

0

它實際上被稱爲URL 重寫。有幾種方法可以實現這一點,更簡單的可能是IIS中的嚮導。

至於所有在單個頁面中的html,您可以使用面板並在需要時更改其可見性。

+0

這聽起來是沿着我想要的東西。任何想法如何在代碼中完成?即如何通過url鏈接切換其可見性? – Chiramisu