您的位置:首页 > 编程语言 > ASP

ASP.NET 页面基类设计—防止2次提交和事件统一管理

2008-04-09 22:10 357 查看
在ASP.NET的应用设计中,有一个好的画面基类很重要,它可以实现如:权限验证,Session管理,共通画面控制==。
现在介绍一下实现 画面 防止2次提交和事件统一管理

1:创建基础页面类


using System;


using System.Web.UI;


using System.Web.UI.WebControls;




namespace WeTest.framework.common




...{


public class BasePage :Page




...{




/**//// <summary>


/// 处理标记ID


/// </summary>


protected const string SyoRiFlg_NM = "SyoRiFlg_234u19798701872348374534543";






/**//// <summary>


/// 处理函数


/// </summary>


/// <param name="pintActCmd">処理コマンド</param>


protected virtual void Run_Gen_Act_Cmd(int pintActCmd)




...{


}






/**//// <summary>


/// 画面实行函数(2次提交验证)


/// </summary>


/// <param name="pintActCmd">処理コマンド</param>


protected void Gen_Act_Cmd(int pintActCmd)




...{


// 处理中验证


if (!IsSyoRiFlg)




...{


// 处理标记设置


SetSyoRiFlg();


// 业务处理


Run_Gen_Act_Cmd(pintActCmd);


// 处理标记清空


ClearSyoRiFlg();


}


}






/**//// <summary>


/// 处理中标记


/// </summary>


public bool IsSyoRiFlg




...{


get




...{


bool blnSyoRi_Flg = false;


if(Session[SyoRiFlg_NM] == null)




...{


Session[SyoRiFlg_NM] = blnSyoRi_Flg;


return blnSyoRi_Flg;


}


blnSyoRi_Flg = (bool)Session[SyoRiFlg_NM];


return blnSyoRi_Flg;


}


}






/**//// <summary>


/// 业务处理中标记设置


/// </summary>


public void SetSyoRiFlg()




...{


bool blnSyoRi_Flg = true;


Session[SyoRiFlg_NM] = blnSyoRi_Flg;


}






/**//// <summary>


/// 业务处理中标记清空


/// </summary>


public void ClearSyoRiFlg()




...{


bool blnSyoRi_Flg = false;


Session[SyoRiFlg_NM] = blnSyoRi_Flg;


}




}




}



2:创建画面,继承上面的基类:


using System;


using System.Collections;


using System.ComponentModel;


using System.Data;


using System.Drawing;


using System.Web;


using System.Web.SessionState;


using System.Web.UI;


using System.Web.UI.WebControls;


using System.Web.UI.HtmlControls;




using WeTest.framework.common;




namespace WeTest




...{




/**//// <summary>


/// testForm1 の概要の説明です。


/// </summary>


public class testForm1 : BasePage




...{


protected System.Web.UI.WebControls.Button testBtn1;




private const int ACTIVE_SEARCH = 1;




private void Page_Load(object sender, System.EventArgs e)




...{




}




override protected void OnInit(EventArgs e)




...{


InitializeComponent();


base.OnInit(e);


}




private void InitializeComponent()




...{


this.testBtn1.Click += new System.EventHandler(this.testBtn1_Click);


this.Load += new System.EventHandler(this.Page_Load);


}




private void testBtn1_Click(object sender, System.EventArgs e)




...{


Gen_Act_Cmd(ACTIVE_SEARCH);


}






/**//// <summary>


/// 处理函数


/// </summary>


/// <param name="pintActCmd">处理命令</param>


protected override void Run_Gen_Act_Cmd(int pintActCmd)




...{


try




...{


switch(pintActCmd)




...{


case ACTIVE_SEARCH:




...{


//To Do


break;


}


}


}


catch(Exception ex)




...{


//Log


Response.Write("<Script>window.alert('System Err' + "+ex.ToString()+")</Script>");


}


}






}


}



这样就可以简单的实现了!!!
这里面还需要,共同日志处理,消息处理等!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: