王朝网络
分享
 
 
 

共享两个做项目最常用功能操作的封装类

王朝other·作者佚名  2006-05-06
宽屏版  字体: |||超大  

[/url]

一. 显示消息对话框类

做项目时总免不了要弹出对话框,或提示用户,或做用户确认。像WinForm下的MessageBox一样很方便,但web下是不是也可以实现呢,答案是肯定的,我简单总结了一下并封装到类,在项目里像WinForm的MessageBox那样直接调用就可以,也可以把它编译成dll作为组件直接调用,并且它也没有弹出对话框时的大白屏现象:)。

/// <summary>

/// 显示消息提示对话框。

/// 李天平

/// 2005.10.1

/// </summary>

public class MessageBox

{

private MessageBox()

{

}

/// <summary>

/// 显示消息提示对话框

/// </summary>

/// <param name="page">当前页面指针,一般为this</param>

/// <param name="msg">提示信息</param>

public static void Show(System.Web.UI.Page page,string msg)

{

page.RegisterStartupScript("message","<script language='javascript' defer>alert('"+msg.ToString()+"');</script>");

}

/// <summary>

/// 控件点击消息确认提示框

/// </summary>

/// <param name="page">当前页面指针,一般为this</param>

/// <param name="msg">提示信息</param>

public static void ShowConfirm(System.Web.UI.WebControls.WebControl Control,string msg)

{

//Control.Attributes.Add("onClick","if (!window.confirm('"+msg+"')){return false;}");

Control.Attributes.Add("onclick", "return confirm('" + msg + "');") ;

}

/// <summary>

/// 显示消息提示对话框,并进行页面跳转

/// </summary>

/// <param name="page">当前页面指针,一般为this</param>

/// <param name="msg">提示信息</param>

/// <param name="url">跳转的目标URL</param>

public static void ShowAndRedirect(System.Web.UI.Page page,string msg,string url)

{

StringBuilder Builder=new StringBuilder();

Builder.Append("<script language='javascript' defer>");

Builder.AppendFormat("alert('{0}');",msg);

Builder.AppendFormat("top.location.href='{0}'",url);

Builder.Append("</script>");

page.RegisterStartupScript("message",Builder.ToString());

}

/// <summary>

/// 输出自定义脚本信息

/// </summary>

/// <param name="page">当前页面指针,一般为this</param>

/// <param name="script">输出脚本</param>

public static void ResponseScript(System.Web.UI.Page page,string script)

{

page.RegisterStartupScript("message","<script language='javascript' defer>"+script+"</script>");

}

}

二.页面数据验证类

做项目,特别做MIS,更避免不了有用户输入数据需要做有效性验证,这里我总结封装了一个页面数据校验的工具类,用起来也是很方便。

/// <summary>

/// 页面数据校验类

/// 李天平

/// 2004.8

/// </summary>

public class PageValidate

{

private static Regex RegNumber = new Regex("^[0-9]+$");

private static Regex RegNumberSign = new Regex("^[+-]?[0-9]+$");

private static Regex RegDecimal = new Regex("^[0-9]+[.]?[0-9]+$");

private static Regex RegDecimalSign = new Regex("^[+-]?[0-9]+[.]?[0-9]+$"); //等价于^[+-]?d+[.]?d+$

private static Regex RegEmail = new Regex("^[\w-]+@[\w-]+\.(com|net|org|edu|mil|tv|biz|info)$");//w 英文字母或数字的字符串,和 [a-zA-Z0-9] 语法一样

private static Regex RegCHZN = new Regex("[u4e00-u9fa5]");

public PageValidate()

{

}

#region 数字字符串检查

/// <summary>

/// 检查Request查询字符串的键值,是否是数字,最大长度限制

/// </summary>

/// <param name="req">Request</param>

/// <param name="inputKey">Request的键值</param>

/// <param name="maxLen">最大长度</param>

/// <returns>返回Request查询字符串</returns>

public static string FetchInputDigit(HttpRequest req, string inputKey, int maxLen)

{

string retVal = string.Empty;

if(inputKey != null && inputKey != string.Empty)

{

retVal = req.QueryString[inputKey];

if(null == retVal)

retVal = req.Form[inputKey];

if(null != retVal)

{

retVal = SqlText(retVal, maxLen);

if(!IsNumber(retVal))

retVal = string.Empty;

}

}

if(retVal == null)

retVal = string.Empty;

return retVal;

}

/// <summary>

/// 是否数字字符串

/// </summary>

/// <param name="inputData">输入字符串</param>

/// <returns></returns>

public static bool IsNumber(string inputData)

{

Match m = RegNumber.Match(inputData);

return m.Success;

}

/// <summary>

/// 是否数字字符串可带正负号

/// </summary>

/// <param name="inputData">输入字符串</param>

/// <returns></returns>

public static bool IsNumberSign(string inputData)

{

Match m = RegNumberSign.Match(inputData);

return m.Success;

}

/// <summary>

/// 是否是浮点数

/// </summary>

/// <param name="inputData">输入字符串</param>

/// <returns></returns>

public static bool IsDecimal(string inputData)

{

Match m = RegDecimal.Match(inputData);

return m.Success;

}

/// <summary>

/// 是否是浮点数可带正负号

/// </summary>

/// <param name="inputData">输入字符串</param>

/// <returns></returns>

public static bool IsDecimalSign(string inputData)

{

Match m = RegDecimalSign.Match(inputData);

return m.Success;

}

#endregion

#region 中文检测

/// <summary>

/// 检测是否有中文字符

/// </summary>

/// <param name="inputData"></param>

/// <returns></returns>

public static bool IsHasCHZN(string inputData)

{

Match m = RegCHZN.Match(inputData);

return m.Success;

}

#endregion

#region 邮件地址

/// <summary>

/// 是否是浮点数可带正负号

/// </summary>

/// <param name="inputData">输入字符串</param>

/// <returns></returns>

public static bool IsEmail(string inputData)

{

Match m = RegEmail.Match(inputData);

return m.Success;

}

#endregion

#region 其他

/// <summary>

/// 检查字符串最大长度,返回指定长度的串

/// </summary>

/// <param name="sqlInput">输入字符串</param>

/// <param name="maxLength">最大长度</param>

/// <returns></returns>

public static string SqlText(string sqlInput, int maxLength)

{

if(sqlInput != null && sqlInput != string.Empty)

{

sqlInput = sqlInput.Trim();

if(sqlInput.Length > maxLength)//按最大长度截取字符串

sqlInput = sqlInput.Substring(0, maxLength);

}

return sqlInput;

}

/// <summary>

/// 字符串编码

/// </summary>

/// <param name="inputData"></param>

/// <returns></returns>

public static string HtmlEncode(string inputData)

{

return HttpUtility.HtmlEncode(inputData);

}

/// <summary>

/// 设置Label显示Encode的字符串

/// </summary>

/// <param name="lbl"></param>

/// <param name="txtInput"></param>

public static void SetLabel(Label lbl, string txtInput)

{

lbl.Text = HtmlEncode(txtInput);

}

public static void SetLabel(Label lbl, object inputObj)

{

SetLabel(lbl, inputObj.ToString());

}

#endregion

}

posted on 2005-12-03 01:32 [url=http://ltp.cnblogs.com/]【李天平】 阅读(2970) 评论(5) 编辑 收藏 收藏至365Key 所属分类: ASP.NET开发

--评论第一个太死板板了。。 还是Hotmail里边的那个比较可爱。删除提示那里的。 回复

[/url]

[url=http://ltp.cnblogs.com/archive/2005/12/03/289724.html#289788]# re: 共享两个做项目最常用功能操作的封装类 2005-12-03 09:12 calvin

同意 夜瞳の小漫~ 的说法,建议用模态窗口替代alert和confirm,有利于加强用户体验,msn space上就没有任何的alert和confirm。

至于第二个验证类的确很实用,我在客户端的验证也做过类似的总结,JSClientValidator-客户端javascript验证新模式 回复

[/url]

[url=http://ltp.cnblogs.com/archive/2005/12/03/289724.html#289814]# re: 共享两个做项目最常用功能操作的封装类 2005-12-03 10:01 ltp

to 夜瞳の小漫~ ,Hotmail里的提示是用window.open()打开一个页面确认,当然了,页面可以做的很好看。但是很容易被禁止掉,如果启动了过滤弹出窗口,就不好使了,且页面会报错的。 回复

[/url]

[url=http://ltp.cnblogs.com/archive/2005/12/03/289724.html#289818]# re: 共享两个做项目最常用功能操作的封装类 2005-12-03 10:08 lovexu

其实在做项目的时候,特别是管理系统后台,大部分都是alert和confirm的方法,简单实用,同时注意到楼主的方法里加了参数:defer,从一定程度上已经避免了弹出窗口的白屏现象。个人觉得封装的挺好的,技术虽然简单,但很实用。 回复

[/url]

[url=http://ltp.cnblogs.com/archive/2005/12/03/289724.html#290722]# re: 共享两个做项目最常用功能操作的封装类 2005-12-05 09:42 小残

再把msg处理一下会不会更好?

msg.Replace("\n",@"\n").Replace("\r",@"\r").Replace("\"",@"\""")

# re: 共享两个做项目最常用功能操作的封装类 2005-12-03 01:53 夜瞳の小漫~

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
>>返回首页<<
推荐阅读
 
 
频道精选
 
静静地坐在废墟上,四周的荒凉一望无际,忽然觉得,凄凉也很美
© 2005- 王朝网络 版权所有