使用母版页的设计建议
本文关键字:母版页 | 更新日期: 2023-09-27 18:25:45
主页
<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>
我发布了我的主页代码,这样你就可以更好地理解我的问题。由于这些控件在我的主页中,我需要为主页中的所有控件创建公共属性,以数据绑定我的内容页。也许我做错了,但这就是我实现这一目标的计划。
ContentPageDefault.aspx page_load
事件将调用我的方法来检索数据,并设置dropdownlist、image和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