ASP.NET 服务器控件和客户端脚本
2.1.1 服务器控件的类型
ASP.NET提供了两种不同类型的服务器控件;HTML服务器控件Web服务器控件。
2.2.1控件的常见属性
ASP.NET 3.5 附带的许多默认服务器控件都派生于WebControl类,拥有类似的属性,可以用于改变它们的外观和行为。并不是所有的派生类都可以使用所有的可以属性。
HTML服务器控件也不是派生自WebControl基类,因为它们主要用于设置HTML元素的属性。下表列出了服务器控件的公有属性。
2.2.2使用层叠样式表改变样式
1.把样式直接用于HTML元素
2.使用Visual Studio样式构建器
3.创建外部样式表
4.创建内部样式表
2.3 HTML服务器控件
ASP.NET允许用户提取HTML元素,转化成服务器端控件。之后,就可以使用它们控制在ASP.NET页面中实现的元素的行为和操作了。
2.3.1 HTMLControl基类
所有的HTML服务器控件都使用一个派生于HtmlControl基类(完整名称是System.Web.UI.HtmlControls.control)的类。这个类从控件的派生类中继承了许多属性。表2-3列出了从这个基类继承的一些属性,其中一些属性本身派生自Control基类。Control类分为WebControl和HtmlControl
2.2.3HtmlContaineControl类
基类HtmlContainerControl用于一些Html类,这些类主要包含在单个节点中的Html元素。如,<img>、<input>和<link>元素用于派生于HtmlControl类的类。
其他Html元素,例如<a>、<form>和<select>,需要一对开闭标记。这些元素使用派生于HtmlContainerControl类的类,HtmlContainerControl类是专门为处理需要闭标记的HTML元素而设计的。
因为HtmlContainerControl类派生于HtmlControl类,所以拥有HtmlControl类的所有属性和方法,还拥有一些在HtmlContainerControl类中声明的新属性。其中最重要的是InnerText和InnerHtml属性。
InnerHtml:允许用户指定包含HTML元素的内容,这些HTML元素放在特定控件的开闭标记之间。
InnerText:允许用户指定要放在特定控件的开闭标记之间的纯文本。
2.2.3 所有的HTML类
把Html元素转换为Html服务器控件时,可以访问上述列表中的一个类。例如,把<title>元素转换为服务器控件:
<title id="Title" runat="server"/>
此时可以访问这个Html元素的HtmlTitle类。使用这个实例,可以执行许多任务,包括给页面标题动态地提供文本值:
C#
Title1.Text= DateTime.Now.ToString()
2.3.4 使用HtmlGenericControl类
HtmlGenericControl的重要属性:它的一些功能不能从ASP.NET提供的其他服务器控件获得。例如:使用
HtmlGenericControl类可以对<meta><p><span>或其他元素进行服务器端的访问,但使用其他类不能进行这样的访问。
2.4通过JavaScript处理页面和服务器控件
ASP.NET使用Page。ClientScript属性在ASP.NET页面上注册和使用JavaScript函数。更多的方法和属性可通过ClientScript对象(它引用了System.Web.UI.ClientScriptManager的一个实例)来获得,但这3个方法比较有用。其他方法可参阅SDK文档。
2.4.1 使用Page.ClientScript.RegisterClientScriptBlock
RegisterClientScriptBlock方法可以把JavaScript函数放在页面的顶部。也就是说,该脚本用于在浏览器中启动页面。其用法如下:
C#
<%@ Page Language="C#" %>
<script runat="server">
protected void page_Load(object sender,EventArgs e)
{
string myScript=@"function AlertHello(){alert('Hello ASP.NET');}";
Page.ClientScript.RegisterClientScriptBlock(this.GatType(),"MyScript",myScript.true);
}
</script>
在这个例子中,把JavaScript函数AlertHello()创建为一个字符串myScript.然后使用Page.ClientScript.RegidterClientScriptBlock方法编写放在页面上的脚本。RegisterClientScriptBlock方法的两种构造方法如下:
RegisterClientScriptBlock(type,key,script)
RegisterClientScriptBlock(tuype,key,script,script tag specification)
在自上面的例子中,把类型指定为Me.GetType(),还指定了键、要包含的脚本,以及一个设置为True的Boolean值,这样,NET就自动把脚本放在ASP.NET页面上的<script>标记中。
2.4.2使用Page.ClientScript.RegisterStartupScript
RegisterStartupScript方法与RegisterClientScriptBlock方法的区别不大。最大的区别在于RegisterStartupScript把脚本放在ASP.NET页面的底部,而不是顶部。实际上,RegisterStartScript方法甚至使用与RegisterClientScriptBlock方法相同的构造方式:
RegisterStartupScript(type,key,script)
RegisterStartupScript(type,key,script tag specification)
如果在页面上有一些处理控件的JavaScript,大多数情况下应使用RegisterStartupScript方法,而不是RegisterClientScriptBlock方法。
2.4.3使用Page.ClientScript.RegisterClientScriptInclude
许多开发人员都把JavaScript放在.js文件中,这是最好的方法,因为容易把对JS的修改应用于整个应用程序。而使用RegisterClientScriptInclude方法可以再ASP.NET 页面上注册脚本文件。
ASP.NET 3.5高级编程 第二章
最新推荐文章于 2024-10-17 15:13:30 发布