簡體   English   中英

使用母版頁的設計建議

[英]Design Advice using Master Pages

母版頁

  <div id="header" style="height: 150px; width: 750px;">
        <asp:Label ID="Label3" runat="server" Text="LoggedInUser:"></asp:Label>
        <asp:Label ID="lblLoggedInUser" runat="server" Text=""></asp:Label>
    </div>
    <div id="leftMenu" class="leftmenu">
          <br />
        <asp:DropDownList ID="ddlFamilyMembers" runat="server" 
              style="height: 25px; width: 125px" DataTextField="FullName" 
              DataValueField="MembershipGen" 
              onselectedindexchanged="ddlFamilyMembers_SelectedIndexChanged" 
              AutoPostBack="True" >
        </asp:DropDownList>
          <br /><br />
          <asp:Image ID="imageMember" class="space" runat="server" Height="150px" Width="125px" />
          <br /><br /><br />
        <asp:Label ID="Label1" runat="server" class="space" Text="MembershipID:"></asp:Label>
        <asp:Label ID="lblMembershipID" runat="server" Text=""></asp:Label>

        <br />
        <asp:Label ID="Label2" runat="server" class="space"  Text="Name:"></asp:Label>
        <asp:Label ID="lblMemberName" runat="server" Text=""></asp:Label>

        <br /><br /><br />
          <asp:LinkButton ID="lbInformation" class="space" runat="server" onclick="lbInformation_Click">Member Information</asp:LinkButton><br />
          <asp:LinkButton ID="lbAddress" class="space" runat="server" 
              onclick="lbAddress_Click">Member Address</asp:LinkButton>
    </div>

<div id="divRight" class="divright">
        <asp:ContentPlaceHolder ID="CPHMain" runat="server">
        </asp:ContentPlaceHolder>
        </div>

我發布了主頁代碼,以便您可以更好地理解我的問題。 由於這些控件在我的母版頁中,因此我需要為我的母版頁中的所有控件創建公共屬性以對內容頁面進行數據綁定。 也許我正在解決這個錯誤,但這就是我計划實現這一目標的方式。

ContentPage Default.aspx page_load事件將調用我的方法以檢索數據並設置下拉列表,圖像和2個標簽字段。 在下拉列表的選定索引更改上,它將從另一種方法獲取新值並相應地填充這些控件。

要閱讀我的母版頁中的這些控件,可以閱讀兩種不同的方法,一種是<%@MasterType VirtualPath="~/Member.Master" %>然后創建一個強類型的連接。 或者,您可以創建一個松散類型的連接。

這些方式的問題是,我將擁有超過15個內容頁面,並且我不希望每次調用其中一個內容頁面時都必須重新綁定DropDownList。 另外,我還必須重新設置內容頁面的每種方法中的控件,以為我做錯了。

有人可以在沒有太多重復代碼的情況下為我提供一些建議的正確方法嗎?

您有一個正確的想法,試圖使父母與孩子脫鈎,但是我認為您想這樣做的方法可能很笨拙。

假設您可以執行此操作,那么我將執行以下操作:

  • 在“母版”頁的代碼隱藏區上設置公共方法BindFamilyMembers(string parameter)

  • 在子頁面上,將必要的唯一參數傳遞給此BindFamilyMembers Master方法。

這樣,您無需公開控件本身,而是公開了一種基於參數修改這些控件的方法。

編輯

您要通知子頁面DDL SelectedIndex已更改。 這是自定義事件的絕佳案例。

您可以在母版頁偵聽的母版頁上配置事件。 當DDL.SelectedIndex更改時,您可以通過自定義事件觸發自定義事件(並傳遞所選信息),並且正在偵聽的任何子頁面都可以處理該事件。

在線上有很多自定義事件的示例。 您可以從這里開始: http : //www.marten-online.com/csharp/simple-custom-event-handling.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM