使用母版页设计建议

时间:2013-07-31 17:26:52

标签: c# asp.net 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。另外,我必须在我的内容页面的每个方法中重新实现控件,我认为我做错了。

有人可以给我一些建议,在没有那么多重复代码的情况下实现这个目的的正确方法是什么?

1 个答案:

答案 0 :(得分:0)

你有正确的想法,试图将父母与孩子分开,但我认为你想做的方式可能很笨拙。

假设你可以这样做,我会做的如下:

  • 在母版页的代码隐藏中创建一个公共方法BindFamilyMembers(string parameter)

  • 在子页面中,将必要的唯一参数传递给此BindFamilyMembers主方法。

这样您就不需要自己公开控件了,您可以公开一个根据参数修改这些控件的方法。

修改

您希望通知子页面DDL SelectedIndex已更改。这是自定义事件的一个很好的例子。

您可以在母版页面上配置子页面侦听的事件。当DDL.SelectedIndex发生更改时,您可以通过自定义事件触发自定义事件(并传递所选信息),并且正在侦听的任何子页面都可以处理该事件。

网上有很多自定义活动的例子。您可以从这里开始:http://www.marten-online.com/csharp/simple-custom-event-handling.html