<%@ 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>
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>