学习Professional ASP.NET 2.0(二)

学习第四章内容

第四章介绍了asp.net服务器控件的类型,格式化控件,介绍HTML服务器控件,以及如何调用客户端脚本

我们主要学asp.net2.0新加的内容

1.服务器控件类型

uploads/200605/07_202140_snap1.gif


2.识别服务器控件

服务器控件左上角有个绿色的三角,将HTML控件转为服务器控件只需选中控件,点右健选择作为服务器控件运行

uploads/200605/07_202246_snap2.gif


3.格式化控件

3.1使用服务器控件本身的属性来定义

uploads/200605/07_202636_snap3.gif


3.2.使用样式表格式化,当然CSS样式表可分为外部和内部

uploads/200605/07_202700_snap4.gif


uploads/200605/07_202818_snap5.gif


3.3也可以使用编程的方式来指定属性

4.共享 HTML 控件属性

所有 HTML 控件共享的属性

uploads/200605/07_203430_snap6.gif

uploads/200605/07_203436_snap7.gif

uploads/200605/07_203440_snap8.gif


5.asp.net2.0 HTML服务器新增控件

一. HtmlHead 提供对服务器上的 HTML<head> 元素的编程访问
< head  id ="head1"
 runat
="server" >
 
< title > To be replaced. </ title >
</ head >

二. HtmlInputPassword 允许编程访问服务器上的 HTML <input type= password> 元素,用于创建一个允许用户输入密码的单行文本框
< input  type ="password"  runat ="server"   />

三. HtmlInputReset 允许编程访问服务器上的 HTML <input type=reset> 元素,用于在网页上创建可将窗体控件重置为初始值的按钮控件
< input  id ="Reset1"  type ="reset"  value ="Clear"  runat ="server"   />

四. HtmlInputSubmit 允许编程访问服务器上的 HTML <input type= submit> 元素,用于在网页上创建一个可提交窗体的按钮控件
< input  type ="submit"  runat ="server"  value ="Submit"   />

五. HtmlLink HtmlLink 控件可用于以声明方式在网页中指定级联样式表引用
< head  runat ="server" >
 
< title > HtmlLink Control </ title >
 
 
< link  id ="Resource1"  href ="StyleSheet.css"  runat ="server"   />
</ head >

六. HtmlTitle 允许编程访问服务器上的 HTML <title> 元素,以编程方式指定 Web 窗体页的 HTML <title> 元素
<% @ Page Language="C#"  %>

< script  runat ="server" >
 
 
void Page_Load(object sender, EventArgs e)
 
{

 
if (Page.Header != null)
 
{
 
 Page.Header.Title 
= "Welcome! The time is: " + System.DateTime.Now;
 
 }

 
 }

 
</ script >

< html >

 
< head  id ="Head1"  runat ="server" >

 
</ head >

 
< body >

 
< form  id ="form1"  runat ="server" >

 
< h3 > HtmlTitle Example </ h3 >

 
</ form >

 
</ body >

</ html >

.HtmlMeta 允许以编程方式访问服务器上的 HTML<meta> 标记
<% @ Page Language=”VB”  %>
< script  runat =”server” >
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
Meta1.Attributes(“Name”) 
= “description”
Meta1.Attributes(“CONTENT”) 
= “Generated on: “ & DateTime.Now.ToString()
End Sub
</ script >
< html  xmlns =”http://www.w3.org/1999/xhtml”  >
< head  runat =”server” >
< title > Using the HtmlGenericControl class </ title >
< meta  id =”Meta1”  runat =”server”  />
</ head >
< body >
< form  id =”form1”  runat =”server” >
< div >
The rain in Spain stays mainly in the plains.
</ div >
</ form >
</ body >
</ html >

6.管理客户端脚本

ClientScriptManager用于在 Web 应用程序中定义用于管理客户端脚本的方法

6.1
使用OnClientClick属性指定引用的脚本事件
<% @ 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.GetType(), 
 
"MyScript", myScript, true);
 
 }

</ script >

< html  xmlns ="http://www.w3.org/1999/xhtml"   >
< head  id ="Head1"  runat ="server" >
 
< title > Adding JavaScript </ title >
</ head >
< body >
 
< form  id ="form1"  runat ="server" >
 
< div >
 
< asp:Button  ID ="Button1"  Runat ="server"  Text ="Button"  
 OnClientClick
="AlertHello()"   />
 
</ div >
 
</ form >
</ body >
</ html >

再看下面的例子
6.2

<% @ Page Language="C#"  %>

<! DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" >

< script  runat ="server" >
 protected 
void Page_Load(object sender, EventArgs e)
 
{
 
// Page will produce Javascript error
 string myScript = @"alert(document.forms[0]['TextBox1'].value);";
 Page.ClientScript.RegisterClientScriptBlock(
this.GetType(), 
 
"MyScript", myScript, true);
 }

</ script >

< html  xmlns ="http://www.w3.org/1999/xhtml"   >
< head  runat ="server" >
 
< title > Untitled Page </ title >
</ head >
< body >
 
< form  id ="form1"  runat ="server" >
 
< div >
 
< asp:TextBox  ID ="TextBox1"  runat ="server"  Text ="Hello ASP.NET" ></ asp:TextBox >
 
</ div >
 
</ form >
</ body >
</ html >

本来的意思是想弹出一个确认窗口,但出现错误提示对象为空可以使用RegisterStartupScript方法

RegisterStartupScript 方法添加的脚本块在页面加载完成但页面的 OnLoad 事件引发之前执行
<% @ Page Language="C#"  %>

<! DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" >

< script  runat ="server" >
 protected 
void Page_Load(object sender, EventArgs e)
 
{
 string myScript 
= @"alert(document.forms[0]['TextBox1'].value);";
 Page.ClientScript.RegisterStartupScript(
this.GetType(), 
 
"MyScript", myScript, true);
 }

</ script >

< html  xmlns ="http://www.w3.org/1999/xhtml"   >
< head  runat ="server" >
 
< title > Untitled Page </ title >
</ head >
< body >
 
< form  id ="form1"  runat ="server" >
 
< div >
 
< asp:TextBox  ID ="TextBox1"  runat ="server"  Text ="Hello ASP.NET" ></ asp:TextBox >
 
</ div >
 
</ form >
</ body >
</ html >

也可以使用RegisterClientScriptInclude方法获取外部JS脚本
string myScript = “myJavaScriptCode.js”
Page.ClientScript.RegisterClientScriptInclude(“myKey”, myScript);
< script  src =”myJavaScriptCode.js”  type =”text/javascript” ></ script >

在 ASP.NET 网页中不经过回发而实现客户端回调

客户端回调组件
创建实现客户端回调的 ASP.NET 页与创建任何 ASP.NET 页类似,但也有些不同。例如,该页必须执行以下操作:

实现 ICallbackEventHandler 接口。可以向任何 ASP.NET 网页添加此接口声明。

包括一个实现 RaiseCallbackEvent 接口的方法。此方法将由回调来调用,然后它将向 clientCallback 函数返回一个字符串。

此外,该页还必须包含执行以下操作的三个客户端脚本函数:

一个函数调用帮助器方法,该方法执行对服务器的实际请求。在此函数中,可以首先执行自定义逻辑以准备事件参数,然后可以将一个字符串作为参数发送到服务器端回调事件处理程序。

另一个函数由处理回调事件的服务器代码的结果调用并接收该结果,同时接受表示该结果的字符串。该函数称为 clientCallBack 函数。

第三个函数是执行对服务器的实际请求的 Helper 函数,当在服务器代码中使用 GetCallbackEventReference 方法生成对此函数的引用时,由 ASP.NET 自动生成该函数。

客户端回调及回发都是对起始页的请求,因此在 Web 服务器日志中将客户端回调及回发记录为页请求
<% @ Page Language="C#" AutoEventWireup="true" CodeFile="RandomNumber.aspx.cs" Inherits="RandomNumber"  %>

<! DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" >

< html  xmlns ="http://www.w3.org/1999/xhtml"   >
< head  id ="Head1"  runat ="server" >
 
< title > Callback Page </ title >
 
 
< script  type ="text/javascript" >
 
function GetNumber()
 UseCallback();
 }

 
 
function GetRandomNumberFromServer(TextBox1, context)
 document.forms[
0].TextBox1.value = TextBox1;
 }

 
</ script >
 
</ head >
< body >
 
< form  id ="form1"  runat ="server" >
 
< div >
 
< input  id ="Button1"  type ="button"  value ="Get Random Number"  
 onclick
="GetNumber()"   />
 
< br  />
 
< br  />
 
< asp:TextBox  ID ="TextBox1"  Runat ="server" ></ asp:TextBox >
 
</ div >
 
</ form >
</ body >
</ html >
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

public partial class RandomNumber : System.Web.UI.Page, ICallbackEventHandler
{
 private string _callbackResult = null;

 protected void Page_Load(object sender, EventArgs e)
 {
 string cbReference = Page.ClientScript.GetCallbackEventReference(this, 
 "arg", "GetRandomNumberFromServer", "context");
 string cbScript = "function UseCallback(arg, context)" +
 "{" + cbReference + ";" + "}";
 
 Page.ClientScript.RegisterClientScriptBlock(this.GetType(),
 "UseCallback", cbScript, true);
 }

 public void RaiseCallbackEvent(string eventArg)
 {
 Random rnd = new Random();
 _callbackResult = rnd.Next().ToString();
 }

 public string GetCallbackResult()
 {
 return _callbackResult;
 }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值