在asp.net 2.0中使用母版页和工厂方法模式
2007-06-27 16:46
453 查看
原文地址:http://www.codeproject.com/aspnet/MasterPagesASP.asp
[原文源码下载]
原文发布日期:2007.01.18
作者:ssaud
翻译:webabcd
介绍
这里我讲解如何充分发挥母版页的优势。关于母版页的优点有大量的文章进行说明,参看 http://www.odetocode.com/Articles/450.aspx 此文当然和那些文章不相同。有时,你会经常碰到这样的场景:相同的用户界面(GUI),但是不同的业务逻辑,如图所示。因此,你会考虑使用用户控件来保持各个页面的标准外观。但如果你听我说明一下如何使用工厂模式设计的母版页,你就会感觉酷毙了!这里我使用了带单击功能的表格(Grid)。
public abstract class Base
public class BIOrderMaster : Base
public class Factory
private Factory Factory = newFactory();
private Base currentObject;
public event GridSelectionChanged GridChanged;
public event SecondryGridSelectionChanged ChildGridChanged;
public string mainTitle
public Base myObject
在page init事件中,我们要求工厂得到合适的Base类型对象,属性myObject返回这个新创建的对象。这个属性在内容页使用,用于在Page Load事件中得到当前具体对象。还记得我们说过的事件的执行顺序吧。在page_init事件中,我们调用factory类getObject方法。如果我们把代码替换到page load事件中,我们就不能内容页得到它的引用,因为,内容页的page load事件在母版页的page load事件之前发生。
protected void Page_Init(object sender, System.EventArgs e)
protected void Page_Load(object sender, EventArgs e)
protected void GV_TitleCompany_SelectedIndexChanged(
object sender, EventArgs e)
public partial class Pages_Default : System.Web.UI.Page
{
privateBase Orders;
protectedvoid Page_Load(object sender, EventArgs e)
{
Pages_MasterGrid myMaster = (Pages_MasterGrid)this.Master;
myMaster.mainTitle = "Order Information";
Orders = myMaster.myObject;
}
protected void Page_Init(object sender, System.EventArgs e)
{
Pages_MasterGrid myMaster = (Pages_MasterGrid)this.Master;
myMaster.GridChanged += FillControls;
myMaster.ChildGridChanged += FillChildInfo;
}
protected void FillControls(object sender, MasterGridEventArgument e)
{
// Code
}
protected void FillChildInfo (object sender, DetailGridEventArgument e)
{
// Code
}
}
在page_init事件中,我们增加自定义事件的处理逻辑,这些自定义事件将由母版页的父表格和子表格调用,然后在page load事件中,我们通过公共属性给Page Title赋值,我们也设置母版页的currentObject。我们给GridChanged事件添加了FillControl函数,以及给ChildGridChanged事件添加了FillChildInfo函数,这些函数将填充Multiview控件中所包括的控件。全部代码请参见源码
结语
这就是所有的内容,我们已经完成了母版页和工厂模式。欢迎大家对此文做出修改和评论。谢谢!
[原文源码下载]
原文发布日期:2007.01.18
作者:ssaud
翻译:webabcd
介绍
这里我讲解如何充分发挥母版页的优势。关于母版页的优点有大量的文章进行说明,参看 http://www.odetocode.com/Articles/450.aspx 此文当然和那些文章不相同。有时,你会经常碰到这样的场景:相同的用户界面(GUI),但是不同的业务逻辑,如图所示。因此,你会考虑使用用户控件来保持各个页面的标准外观。但如果你听我说明一下如何使用工厂模式设计的母版页,你就会感觉酷毙了!这里我使用了带单击功能的表格(Grid)。
public abstract class Base
public class BIOrderMaster : Base
public class Factory
private Factory Factory = newFactory();
private Base currentObject;
public event GridSelectionChanged GridChanged;
public event SecondryGridSelectionChanged ChildGridChanged;
public string mainTitle
public Base myObject
在page init事件中,我们要求工厂得到合适的Base类型对象,属性myObject返回这个新创建的对象。这个属性在内容页使用,用于在Page Load事件中得到当前具体对象。还记得我们说过的事件的执行顺序吧。在page_init事件中,我们调用factory类getObject方法。如果我们把代码替换到page load事件中,我们就不能内容页得到它的引用,因为,内容页的page load事件在母版页的page load事件之前发生。
protected void Page_Init(object sender, System.EventArgs e)
protected void Page_Load(object sender, EventArgs e)
protected void GV_TitleCompany_SelectedIndexChanged(
object sender, EventArgs e)
public partial class Pages_Default : System.Web.UI.Page
{
privateBase Orders;
protectedvoid Page_Load(object sender, EventArgs e)
{
Pages_MasterGrid myMaster = (Pages_MasterGrid)this.Master;
myMaster.mainTitle = "Order Information";
Orders = myMaster.myObject;
}
protected void Page_Init(object sender, System.EventArgs e)
{
Pages_MasterGrid myMaster = (Pages_MasterGrid)this.Master;
myMaster.GridChanged += FillControls;
myMaster.ChildGridChanged += FillChildInfo;
}
protected void FillControls(object sender, MasterGridEventArgument e)
{
// Code
}
protected void FillChildInfo (object sender, DetailGridEventArgument e)
{
// Code
}
}
在page_init事件中,我们增加自定义事件的处理逻辑,这些自定义事件将由母版页的父表格和子表格调用,然后在page load事件中,我们通过公共属性给Page Title赋值,我们也设置母版页的currentObject。我们给GridChanged事件添加了FillControl函数,以及给ChildGridChanged事件添加了FillChildInfo函数,这些函数将填充Multiview控件中所包括的控件。全部代码请参见源码
结语
这就是所有的内容,我们已经完成了母版页和工厂模式。欢迎大家对此文做出修改和评论。谢谢!
相关文章推荐
- [推荐]在asp.net 2.0中使用母版页和工厂方法模式
- [翻译]在asp.net 2.0中使用母版页和工厂方法模式
- [翻译]在asp.net 2.0中使用母版页和工厂方法模式
- [翻译]在asp.net 2.0中使用母版页和工厂方法模式
- 小tips:asp.net 2.0中在gridview中使用DataFromatString
- ASP.NET 2.0使用Web Part创建应用程序之二(共二)
- 使用ASP.net 2.0 的一些新特性
- ASP.NET 2.0中使用Gridview控件的高级技巧
- ASP.NET 2.0中DataList控件与GridView控件的使用实例
- ASP.NET 2.0 使用AJAX对用户名,Email进行验证
- [ASP.NET 2.0]创建母版页引来的麻烦
- ASP.NET 2.0 正式版中callback的一些变化+使用示例
- ASP.NET 2.0中XSLT的使用
- ASP.NET 2.0 正式版中callback的一些变化+使用示例
- ASP.NET 2.0使用user profile储存信息前,如何部署aspnetdb.mdf和正确建立连接
- ASP.NET母版页和Web用户控件的使用
- asp.net (2.0)使用fckeditor 方法详解(多图文档)
- asp.net 2.0 ajax中使用PopupControlExtender
- JavaScript 与 ASP.NET 2.0 配合使用
- Asp.net 2.0 WebPart使用经验点滴