用ASP.NET建立简单的Web Form

ASP.NET引入了一种新的Web编程方法。对于使用传统编程语言如Visual Basic或C++的人,这种方法是很熟悉的。如果你是一个Web程序员只接触过脚本语言的话,不必着急,这篇文章将使你快速入门。
作为程序员,我们再也不必将HTML和代码混在一起,再也不必从上往下一行一行的写代码了。ASP.NET让代码和表现分开,使用了事件驱动的编程模式。在这里,我们将看到ASP.NET中Web Form的基本结构。
ASP.NET的页面是事件驱动和面向对象的。就是说,程序员能为事件提供代码,如按钮的点击,页面的调用等等。在页面中能被编程访问的每个标记都有一个runat=server的属性。尽管标准的HTML控件仍能被使用,但ASP.NET提供了更加强大的服务端控件。这些控件提供了一套自己的方法和属性,通过它们能充分的定制控件的输出。这些控件和页面一起被编译,它们依据客户端浏览器的版本输出不同的HTML。这就使得我们不需要考虑浏览器兼容的问题,一个页面可以在任何的浏览器上运行。
我们建立一张页面,两个输入框,收集访问者的名字和最喜欢的颜色。另外,我们希望结果传回本身,然后在最上方显示一行信息,并维持输入框中的内容。

这是传统的ASP页面 

<%@ Language=VBScript %>
<html>
<head>
<title>2000081402</title>
</head>
<body>
<form id="sample1" method="post"action="sample1.asp">
<%
If Request.Form.Count <> 0 Then
Response.Write "Your name is "
Response.Write Request.Form("txtName")
Response.Write ", and your favoritecolor is "
Response.Write Request.Form("selColor")
Response.Write "<br>"
End If
%>
<table cellSpacing=0 cellPadding=4 border=0>
<tr>
<td><p align=right>What is yourname:</p></td>
<td><input type="text"name= txtNamevalue="<%=Request.Form("txtName")%>"></td></tr>
<tr>
<td><p align=right>What is yourfavorite color:</p></td>
<td>
<select name=selColor>
<option <%if Request.Form("selColor")= "Black" Then Response.Write "selected"%>>Black</option>
<option <%if Request.Form("selColor")= "Blue" Then Response.Write "selected"%>>Blue</option>
<option <%if Request.Form("selColor")= "Green" Then Response.Write "selected"%>>Green</option>
<option <%if Request.Form("selColor")= "Pink" Then Response.Write "selected"%>>Pink</option>
<option <%if Request.Form("selColor")= "Red" Then Response.Write "selected"%>>Red</option>
</select>
</td></tr>
<tr>
<td> </td>
<td><input type="submit"id=submit value="Submit"></td></tr>
</table>
</form>
</body>
</html> 

我们看到,在这里我们不得不将ASP代码和HTML混在一起,使得代码非常的难以看懂,想象一下如果一个非常复杂的页面……
我们的页面首先判断是否是回传,还是第一次访问。我们通过检查Request.Form集合。如果是0,表示是第一次访问,否则表示提交的按钮被按下了,我们将通过Response.Write输出一条信息给用户。
<%
If Request.Form.Count <> 0 Then
Response.Write "Your name is "
Response.Write Request.Form("txtName")
Response.Write ", and your favoritecolor is "
Response.Write Request.Form("selColor")
Response.Write "<br>"
End If
%> 

对于我们表单中的每个元素,我们必须通过代码来使它们保持状态。这些代码简单而相似。
<td><input type="text"name= txtNamevalue="<%=Request.Form("txtName")%>"></td></tr>
...
<select name=selColor>
<option <%if Request.Form("selColor")= "Black" Then Response.Write "selected"%>>Black</option>
<option <%if Request.Form("selColor")= "Blue" Then Response.Write "selected"%>>Blue</option>
<option <%if Request.Form("selColor")= "Green" Then Response.Write "selected"%>>Green</option>
<option <%if Request.Form("selColor")= "Pink" Then Response.Write "selected"%>>Pink</option>
<option <%if Request.Form("selColor")= "Red" Then Response.Write "selected"%>>Red</option>
</select> 

ASP.NET的一个好处就是简单。常见普通的一些功能不再需要写许多代码。简单的声明一个服务端控件就可以提供很多功能。

这是ASP.NET中的页面

<%@ Page Language="vb" %>
<html>
<head>
<title>2000081402</title>
<script language="vb" runat=server>
Sub Page_Load(Source As Object,E AsEventArgs)
If Page.IsPostBack Then
divResults.innerText = "Your name is" & txtName.Value & _
", and your favorite color is "& selColor.Value
End If
End Sub
</script>
</head>
<body>
<form id="sample1" method="post"runat=server>
<div id=divResults runat=server />
<table cellSpacing=0 cellPadding=4 border=0>
<tr>
<td>
<p align=right>What is your name:</p></td>
<td><input type="text"id=txtName runat=server /></td></tr>
<tr>
<td>
<p align=right>What is your favoritecolor:</p></td>
<td>
<select id=selColor runat=server>
<option>Black</option>
<option>Blue</option>
<option>Green</option>
<option>Pink</option>
<option>Red</option>
</select>
</td></tr>
<tr>
<td> </td><td>
<input type="submit" id=submitvalue="Submit" runat=server/>
</td></tr>
</table>
</form>
</body>
</html> 

"runat=server"属性
给普通的HTML元素加上"runat=server"的属性,它就成了ASP.NET的服务端控件。我们可以通过ID编程访问这些服务端控件。我们不再使用Response.Write来输出信息(虽然我们还是可以使用的),我们通过一个服务端的DIV标记来输出信息给用户。
<div id=divResults runat=server /> 

我们可以编程改变服务端控件的属性如"innerText"。

Page_Load事件和IsPostBack Method方法
首先,我们要检查是不是第一次访问。由于这是一个常规的检查,ASP.NET提供了一个页面的方法:IsPostBack。这个方法当页面是提交时返回真,第一次访问的话返回false。我们可以在任何的服务器端代码中进行检查。我们是在Page_Load事件中检查的。
就像我上面说的,每一个服务端控件都是一个对象,包括Page。作为一个对象,我们能访问对象的属性,方法和事件如Page_Load。当页面被调用时,这个事件就被触发了,事件的代码就被执行了。如果Page.IsPostBack返回真,这是用Div控件的innerText属性输出信息。例外,由于Form中的元素都是服务端控件,我们可以直接来访问他们的属性而不用使用Request.Form。我们可以通过控件的ID来访问Value这个属性来得到值。
<script language="vb" runat=server>
Sub Page_Load(Source As Object,E AsEventArgs)
If Page.IsPostBack Then
divResults.innerText = "Your name is" & txtName.Value & _
", and your favorite color is "& selColor.Value
End If
End Sub
</script> 

管理状态
由于我们所有的元素都是服务端控件了,所以它们的状态都是自动管理的。这种状态管理使用过页面中的一个隐藏字段来完成的。
下面是在浏览其中网页的源程序。
<html>
<head>
<title>2000081402</title>
</head>
<body>
<FORM name="sample1" method="post"action="sample1.aspx" id="sample1">
<INPUT type="hidden" name="__VIEWSTATE"value="a0z1019323966_a0z_hz5z2x_a0z_hz5z1x_a0zhzinnerhtml_Yourname is Doug Seven, and your favorite coloris Greenx_xxxxx_x">
<div id="strResults">Yourname is Doug Seven, and your favorite coloris Green</div>
<table cellSpacing=0 cellPadding=4 border=0>
<tr>
<td>
<p align=right>What is your name:</p></td>
<td><INPUT value="Doug Seven"name="txtName" id="txtName"type="text"></td></tr>
<tr>
<td>
<p align=right>What is your favoritecolor:</p></td>
<td>
<SELECT name="selColor" id="selColor">
<OPTION value="Black">Black</OPTION>
<OPTION value="Blue">Blue</OPTION>
<OPTION selected value="Green">Green</OPTION>
<OPTION value="Pink">Pink</OPTION>
<OPTION value="Red">Red</OPTION>
</SELECT>
</td></tr>
<tr>
<td></td>
<td><INPUT name="submit"id="submit" type="submit"value="Submit"></td></tr>
</table>
</FORM>
</body>
</html> 

我们通过这种方法来管理状态,不必考虑服务器的内存使用,而且由于状态是在一个隐藏的字段中,它能在Web Farm或Web Garden中很好的运行。
在这篇文章里,我们一起看了ASP.NET的Web Form的基本结构。我们从程序中就能看到通过使用服务端控件能减少许多代码量,能更容易的控制输出。

时间: 2024-08-29 11:52:16

用ASP.NET建立简单的Web Form的相关文章

用ASP.NET建立简单的新闻发布系统

下面是一个建立新闻发布系统的程序,不用和数据库打交道哦 步骤: (1).在vs2005中新建网站,新建三个aspx网页,分别命名:title.aspx,news.aspx,main.aspx其中title.aspx用来设置标题,可以自己设计,写几个字也行,news.aspx用来显示新闻标题,main.aspx用来显示新闻内容. (2).新建htm页,用来设计框架.代码如下: <html xmlns="http://www.w3.org/1999/xhtml" > <h

别总以为asp.net mvc比asp.net web form好--web form的页面也可以体积小巧

最近才看到网上有一种对asp.net web form的误解.也有很多讨论,弄得微软ScottGu也来澄清.asp.net mvc和web form是并行存在的两种开发模式.许多人对web form的诟病很多,其中最主要的就是说viewstate,随便一个web form页面,其html源码就体积很大,主要是隐藏字段viewstate体积比较大,至少几十K,页面复杂一点,viewstate的大小能上几兆,这样大体积的页面,在浏览器和服务器之间传输,对网络带宽也是一个很大的压力,所以asp.net

如何用ASP.NET编写一段web页面的简单计算器(只要求加减乘除四则运算)

问题描述 用ASP.NET编写一段web页面的简单计算器(只要求加减乘除四则运算) 解决方案 解决方案二:这很难么?解决方案三:你是具体哪里不懂?解决方案四:我不会,我属于小白,谁能写一个给我解决方案五:告诉你一个最简单的办法,用Javascript语句:functioncompute(){try{eval('varval='+document.getElementById('expr').value);document.getElementById('result').value=val;}c

c#-asp的web form中,在后台生成了表,怎样让表在网页上显示

问题描述 asp的web form中,在后台生成了表,怎样让表在网页上显示 自己在后台动态生成了一个表,但是在网页上面显示不出来,不知道为什么,表的动态生成写在Page__load()函数中,页面设计如下: <%@Page Language="C#" AutoEventWireup="true" CodeBehind="Reservationa.aspx.cs" Inherits="HT.Reservationa" Ma

ASP.NET开发中关于Web标准的几点建议

摘要:NET开发新手总会遇到一些ASP.NET开发过程中与Web标准之间的冲突问题,这里向您提供几个建议,使ASP.NET开发过更加符合Web标准. Visual Studio.NET从2003到现在的2008,一路走来慢慢强大--从以前的vs2003能自动改乱你的html代码到现在在vs2008中都能直接对html代码进行w3c标准验证并提示了,非常不易. 论坛中也经常有从事.NET开发的新手朋友问一些ASP.NET开发过程中与Web标准之间的冲突问题,其实说到底就是客户端代码生成的问题.更高

.net中关于ASP.NET的简单介绍

asp.net 共享对象类别库 ASP.NET 是共享对象类别库中的一员,ASP.NET 提供了一个Web 应用程序模型.这模型提供了一些窗体.控件及基础架构,让程序设计师简单的建立Web 应用程序.ASP.NET 提供了一些对应HTML 元素(例如按钮.清单盒等)的HTML 控件(HTML Controls,第四章会提到)以及功能更强的Web 控件(Web Controls,第六章会提到):这些控件在伺服端执行,然后在客户端的浏览器以HTML 元素的方式显示.这种HTML 控件在伺服端以对象导

用ASP和SQL实现基于Web的事件日历

web|日历 本文介绍如何建立基于Web的日历,同时为不熟悉Active Server Pages(ASP).SQL和ADO的开发者提供建立Web站点的过程介绍,也为有经验的开发者提供了Web站点可伸缩性方面的技巧. 随着网络应用的发展,基于Web的日历越来越受到人们的重视,对于显示诸如最后期限或日程安排之类的重要事件,或显示谁在什么时候休假,基于Web的日历都是有用的.本文描述了如何使用IIS和SQL Server内的ASP建立一个非常简单的基于Web的日历,并允许你与其他人共享你的日程表或管

建立自己的WEB平台

平时野猫很少自己写文章,只因工作太忙,还要做叶子--今天终于有点空了!制作网页也有一年的多的时间了,在这里把野猫的一些经验拿来和大家交流一下! 1.制作工具的选择:"公欲善其事,比先利其器",工具的选择是非常重要的.这里的工具包括:网页制作.图片处理.动画制作,以及一些辅助工具.野猫推荐以下工具. 网页制作]dreamweaver3它相比FrontPage2000的优势在于,生成的网页文件冗余代码少,文件相对小一些:可很方便的制作动态网页:很强大站点维护功能:插件可无限扩展,从而很简单

用C#制作一个最简单的Web Service

web 下面,我们看看如何建立和部署一个最简单的Web服务 建立Web服务 1.在wwwroot目录下建立一个叫做Webservice的目录. 2.建立下面这样一个文件: <%@ WebService Language="c#" Class="AddNumbers"%> using System;using System.Web.Services;public class AddNumbers : WebService{[WebMethod]public