扩展方法 之 Asp.Net篇
2009-09-25 23:20
393 查看
说起扩展方法,不得不提博客园的鹤冲天,其关于扩展方法的文章基本上占了总文章的一半,其中不乏优秀之作。
我在Asp.Net开发期间也总结了不少扩展方法,与大家分享一下。
1. 获取GridView的主键值:
public static T GetKey<T>(this GridView grid, int rowIndex)
示例:
protected void gvMaster_RowEditing(object sender, GridViewEditEventArgs e)
[/b]2. 获取GridView的行号:
public static int GetRowIndex(this GridViewCommandEventArgs e)
示例:
protected void gvMaster_RowCommand(object sender, GridViewCommandEventArgs e)
[/b]
3. 查找指定ID的控件,并转换成指定类型:
public static T FindControl<T>(this Control control, string id) where T : class
示例:
//从整个页面里查找ID为lblTest的Label
this.FindControl<Label>("lblTest");
//从Panel里查找ID为lblTest的Label
Panel1.FindControl<Label>("lblTest");
4. 查找指定类型的控件:
public static List<T> FindControls<T>(this Control control) where T : Control
示例:
//从整个页面里查找所有Label
this.FindControls<Label>();
//从Panel里查找所有Label
Panel1.FindControls<Label>();
备注:
在实际开发中有个不错的应用场景——找到所有的RequiredFieldValidator控件并统一设置其错误信息和提示信息:
var rs = this.FindControls<RequiredFieldValidator>();
foreach (var r in rs)
当然,如果在FindControls中增加一个Action<T> 参数应该是个不错的方案,这样以上语句就可以直接写成:
5. 判断本页是是否使用Ajax (其实就是判断是否使用了ScriptManager):
public static bool IsAjaxPage(this Page page)
public static bool IsAjaxPage(this Control control)
示例:
if (this.IsAjaxPage())
[/b]
6. UpdatePanel 调用javascript 显示信息:
public static void Alert(this UpdatePanel panel, string message)
示例:
udpHeader.Alert("Hello,I'm Bruce!");//注:udpHeader 是UpdatePanel 类型
把 alert 换成漂亮的提示框就perfect了。
总结:
实际项目中远不止这几个扩展方法,只是比较典型就发上来交流交流,其他的稍微有点复杂而且不经常用到。
有了这些扩展方法,就可以去除项目中很多重复性代码,欢迎大家提出更好的建议。
末了发觉有点纯代码的味道,但实在这些方法都是入门级,也应该没哪一个是看不懂的,也就不在这里一一罗嗦。
我在Asp.Net开发期间也总结了不少扩展方法,与大家分享一下。
1. 获取GridView的主键值:
public static T GetKey<T>(this GridView grid, int rowIndex)
示例:
protected void gvMaster_RowEditing(object sender, GridViewEditEventArgs e)
[/b]2. 获取GridView的行号:
public static int GetRowIndex(this GridViewCommandEventArgs e)
示例:
protected void gvMaster_RowCommand(object sender, GridViewCommandEventArgs e)
[/b]
3. 查找指定ID的控件,并转换成指定类型:
public static T FindControl<T>(this Control control, string id) where T : class
示例:
//从整个页面里查找ID为lblTest的Label
this.FindControl<Label>("lblTest");
//从Panel里查找ID为lblTest的Label
Panel1.FindControl<Label>("lblTest");
4. 查找指定类型的控件:
public static List<T> FindControls<T>(this Control control) where T : Control
示例:
//从整个页面里查找所有Label
this.FindControls<Label>();
//从Panel里查找所有Label
Panel1.FindControls<Label>();
备注:
在实际开发中有个不错的应用场景——找到所有的RequiredFieldValidator控件并统一设置其错误信息和提示信息:
var rs = this.FindControls<RequiredFieldValidator>();
foreach (var r in rs)
当然,如果在FindControls中增加一个Action<T> 参数应该是个不错的方案,这样以上语句就可以直接写成:
5. 判断本页是是否使用Ajax (其实就是判断是否使用了ScriptManager):
public static bool IsAjaxPage(this Page page)
public static bool IsAjaxPage(this Control control)
示例:
if (this.IsAjaxPage())
[/b]
6. UpdatePanel 调用javascript 显示信息:
public static void Alert(this UpdatePanel panel, string message)
示例:
udpHeader.Alert("Hello,I'm Bruce!");//注:udpHeader 是UpdatePanel 类型
把 alert 换成漂亮的提示框就perfect了。
总结:
实际项目中远不止这几个扩展方法,只是比较典型就发上来交流交流,其他的稍微有点复杂而且不经常用到。
有了这些扩展方法,就可以去除项目中很多重复性代码,欢迎大家提出更好的建议。
末了发觉有点纯代码的味道,但实在这些方法都是入门级,也应该没哪一个是看不懂的,也就不在这里一一罗嗦。
相关文章推荐
- ASP.NET MVC学前篇之扩展方法、链式编程
- dhl: 在 ASP.NET MVC 中创建自定义 HtmlHelper 使用扩展方法创建 HTML Helper
- 一起谈.NET技术,ASP.NET MVC验证框架中关于属性标记的通用扩展方法
- 学用 ASP.Net 之 "字符串" (4): string 类的扩展方法
- asp.net:mv4 FileResult在IE8中下载不显示文件名和扩展名而显示Action方法名了!
- 解决“IIS中找不到web扩展服务ASP.NET v2.0.50727”的方法 分享
- ASP.NET 1.1 没有出现在 IIS 6.0 中的 Web 服务扩展列表中的解决方法
- Asp.Net MVC 扩展 Html.ImageFor 方法详解
- ASP.NET MVC学前篇之扩展方法、链式编程 推荐
- Asp.Net Ajax以及Asp.Net Ajax扩展控件安装方法
- ASP.Net MVC开发基础学习笔记:二、HtmlHelper与扩展方法
- 【ASP.NET MVC 学习笔记】- 14 HtmlHlper的扩展方法
- Asp.Net MVC扩展方法
- 扩展方法 之 Asp.Net篇
- 《ASP.NET MVC验证框架中关于属性标记的通用扩展方法》之继续扩展
- asp.net mvc htmlhelper 扩展方法
- Asp.Net MVC以 JSON传值扩展方法
- Asp.net MVC的Model Binder工作流程以及扩展方法(2) - Binder Attribute
- 艾伟_转载:扩展方法 之 Asp.Net篇
- c# 扩展方法奇思妙用 ASP.NET MVC 篇:巧用扩展方法优先级,美化所有页面 TextBoxFor 文本框