ASP.NET 页面基类设计—防止2次提交和事件统一管理
来源:互联网 发布:网络日语课堂老师招聘 编辑:程序博客网 时间:2024/05/29 18:39
在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;
}
}
}
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>");
}
}
}
}
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>");
}
}
}
}
这样就可以简单的实现了!!!
这里面还需要,共同日志处理,消息处理等!
- ASP.NET 页面基类设计—防止2次提交和事件统一管理
- ASP.NET 页面基类设计—防止2次提交和事件统一管理
- ASP.NET防止页面被多次提交
- ASP.NET防止页面被多次提交
- Asp.net页面防止重复提交
- asp.net 防止页面重复提交
- ASP.NET如何防止页面重复提交
- 防止asp.net页面多次提交数据
- 防止asp.net页面多次提交数据
- Asp.net防止页面重复提交
- ASP.NET如何防止页面重复提交
- asp.net 防止页面重复提交
- 在ASP.NET AJAX中防止用户多次提交页面
- ASP.NET中防止刷新页面造成表单重复提交
- ASP.NET中防止刷新页面造成表单重复提交
- ASP.NET AJAX中防止用户多次提交页面
- ASP.NET中防止页面多次提交的代码实现
- ASP.NET中防止页面多次提交的代码实现
- JS中使用hash表
- JDBC 入门(三)
- 封装ASP.NET操作ACCESS数据库常用操作的类
- 在WEB下的客户端控件的开发应用
- xbap中如何将3D动画发布到web浏览器
- ASP.NET 页面基类设计—防止2次提交和事件统一管理
- "ConfigurationSettings.AppSettings”已过时问题
- 安装配置sendmail服务器
- 由const引发的版本控制问题
- spring+ibatis事务处理配置
- 随笔
- 10个估计你至尽没有用过的Linux命令
- 关于 With……End With 的用法
- ASP无组件上传文件到服务器