分享来自zoomla!逐浪CMS的三个ASP.NET实用技巧

来源:互联网 发布:淘宝店铺欢迎语幽默 编辑:程序博客网 时间:2024/04/27 05:38

分享来自zoomla!逐浪CMS的三个ASP.NET实用技巧

 

在服务器端控件中添加客户端属性
  我们有时会向服务器端控件中添加一些特殊的属性,这类属性不需要服务器端的处理,只需简单的发送至客户端即可,我们不妨称其为客户端属性,例如HTML属性或自定义属性(可能用于实现某种特定的JavaScript功能)。可以通过以下几种方法达到这个目的:
  a.直接向控件添加客户端属性
  其中的onmouseover是客户端属性,注意,编译器是允许这种写法的,但会显示警告。
  b.调用内置方法
  可以通过调用WebControl.Attributes.Add()方法为控件添加客户端属性,如下所示:
MyButton.Attributes.Add("onmouseover", "this.style.cursor='pointer'");
  这也是最常用的方法。
  c.创建自定义控件
  如果某个类型的服务器端控件中经常需要添加客户端属性,则可以考虑创建一个继承自该服务器端控件的自定义控件,其中包含特定的客户端属性。
  正是考虑到这一点,ASP.NET 2.0中为按钮控件(包括Button、LinkButton、ImageButton控件)提供了OnClientClick属性,可以这样写:
MyButton.OnClientClick = "alert('Hello!')";
  真是贴心的功能!

 

跟踪页面执行  

设置断点是页面调试过程中的常用手段,除此之外,还可以通过查看页面的跟踪信息进行错误排查以及性能优化。ASP.NET中启用页面跟踪非常方便,只需在Page指令中加入Trace="True"属性即可:
<%@ Page Language="C#" Trace="true">

  跟踪信息可以分为两类:
  a.页面执行详细情况
  其中主要包括页面生命周期中各事件列表、控件树列表(可以查看每个控件的HTML字节数以及ViewState字节数)、Session状态、Application状态、Cookie集合、QueryString集合、服务器变量等信息。
  b.自定义跟踪信息
  通过在页面代码中调用Trace.Write()或Trace.Warn()方法便可将指定内容写入跟踪信息中的"TraceInformation"节。就算页面发生了错误,跟踪信息还是会显示出来,并且在发布应用程序时无需删除相关的跟踪代码,只需从Page指令中移除Trace属性即可。

 

表单数据的服务器端验证
  将数据验证任务从服务器端迁移到客户端的过程促使了JavaScript的产生,这也是我们沿用至今的一种方式。但只有在保证客户端JavaScript正常运行的前提下,这种方式才能发挥其作用。不幸的是,总有一些例外,比如浏览器不支持JavaScript,或者用户刻意关闭了浏览器的JavaScript功能,这就导致了第一重防护失效。比较保险的做法是加入第二重防护,即对用户提交的数据进行服务器端验证,但这无疑将增加开发者的工作量。
  ASP.NET 2.0提供了一系列表单数据验证控件,可以非常轻松的完成客户端及服务器端的双重数据验证任务。但要使服务器端验证功能发挥作用,还需要用到Page.IsValid属性,请看下面的例子:
  姓名: ator ID="RequiredFieldValidator1" ControlToValidate="txtName" ErrorMessage="请填写姓名!" Display="Dynamic" runat="server">
  这是一个HTML片段,其中有一个RequiredFieldValidator控件用于检查是否已填写姓名。下面是点击按钮时执行的服务器端代码:
  protected void btnSubmit_Click(object sender, EventArgs e){if(Page.IsValid) //注意:不要遗漏对Page.IsValid属性的判断{Response.Write("你的名字是:" +txtName.Text);}}
  其中,要特别注意对Page.IsValid属性的判断,只有页面中所有验证控件对数据的验证都成功时,Page.IsValid属性才为True,这代表提交的数据为有效数据,可以进入下一步操作。

更多精彩内容请阅读:zoomla!逐浪CMS