繁体   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