设为首页收藏本站language 语言切换
查看: 1480|回复: 0
收起左侧

用ASP.NET建立简单的Web Form

[复制链接]
发表于 2010-2-25 10:19:27 | 显示全部楼层 |阅读模式
<p ><ccid_nobr>ASP.NET引入了一种新的Web编程方法。对于使用传统编程语言如Visual Basic或C++的人,这种方法是很熟悉的。如果你是一个Web程序员只接触过脚本语言的话,不必着急,这篇文章将使你快速入门。<br/>作为程序员,我们再也不必将HTML和代码混在一起,再也不必从上往下一行一行的写代码了。ASP.NET让代码和表现分开,使用了事件驱动的编程模式。在这里,我们将看到ASP.NET中Web Form的基本结构。<br/>ASP.NET的页面是事件驱动和面向对象的。就是说,程序员能为事件提供代码,如按钮的点击,页面的调用等等。在页面中能被编程访问的每个标记都有一个runat=server的属性。尽管标准的HTML控件仍能被使用,但ASP.NET提供了更加强大的服务端控件。这些控件提供了一套自己的方法和属性,通过它们能充分的定制控件的输出。这些控件和页面一起被编译,它们依据客户端浏览器的版本输出不同的HTML。这就使得我们不需要考虑浏览器兼容的问题,一个页面可以在任何的浏览器上运行。<br/>我们建立一张页面,两个输入框,收集访问者的名字和最喜欢的颜色。另外,我们希望结果传回本身,然后在最上方显示一行信息,并维持输入框中的内容。<br/><br/><b>这是传统的ASP页面</b><div align="center"><img  src="http://www.hh010.com/upload_files/article/244/9_nogjvt8594.gif"></div><br/><table width="580" border="1" cellspacing="0" cellpadding="0" bordercolorlight="black" bordercolordark="#ffffff"><tr><td bgcolor="e6e6e6" class="code">&lt;%@ Language=VBScript %&gt;<br/>&lt;html&gt;<br/>&lt;head&gt;<br/>&lt;title&gt;2000081402&lt;/title&gt;<br/>&lt;/head&gt;<br/>&lt;body&gt;<br/>&lt;form id=&quot;sample1&quot; method=&quot;post&quot;action=&quot;sample1.asp&quot;&gt;<br/>&lt;%<br/>If Request.Form.Count &lt;&gt; 0 Then<br/>Response.Write &quot;Your name is &quot;<br/>Response.Write Request.Form(&quot;txtName&quot;)<br/>Response.Write &quot;, and your favoritecolor is &quot;<br/>Response.Write Request.Form(&quot;selColor&quot;)<br/>Response.Write &quot;&lt;br&gt;&quot;<br/>End If<br/>%&gt;<br/>&lt;table cellSpacing=0 cellPadding=4 border=0&gt;<br/>&lt;tr&gt;<br/>&lt;td&gt;&lt;p align=right&gt;What is yourname:&lt;/p&gt;&lt;/td&gt;<br/>&lt;td&gt;&lt;input type=&quot;text&quot;name= txtNamevalue=&quot;&lt;%=Request.Form(&quot;txtName&quot;)%&gt;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;<br/>&lt;tr&gt;<br/>&lt;td&gt;&lt;p align=right&gt;What is yourfavorite color:&lt;/p&gt;&lt;/td&gt;<br/>&lt;td&gt;<br/>&lt;select name=selColor&gt;<br/>&lt;option &lt;%if Request.Form(&quot;selColor&quot;)= &quot;Black&quot; Then Response.Write &quot;selected&quot;%&gt;&gt;Black&lt;/option&gt;<br/>&lt;option &lt;%if Request.Form(&quot;selColor&quot;)= &quot;Blue&quot; Then Response.Write &quot;selected&quot;%&gt;&gt;Blue&lt;/option&gt;<br/>&lt;option &lt;%if Request.Form(&quot;selColor&quot;)= &quot;Green&quot; Then Response.Write &quot;selected&quot;%&gt;&gt;Green&lt;/option&gt;<br/>&lt;option &lt;%if Request.Form(&quot;selColor&quot;)= &quotink&quot; Then Response.Write &quot;selected&quot;%&gt;&gtink&lt;/option&gt;<br/>&lt;option &lt;%if Request.Form(&quot;selColor&quot;)= &quot;Red&quot; Then Response.Write &quot;selected&quot;%&gt;&gt;Red&lt;/option&gt;<br/>&lt;/select&gt;<br/>&lt;/td&gt;&lt;/tr&gt;<br/>&lt;tr&gt;<br/>&lt;td&gt;&amp;nbsp;&lt;/td&gt;<br/>&lt;td&gt;&lt;input type=&quot;submit&quot;id=submit value=&quot;Submit&quot;&gt;&lt;/td&gt;&lt;/tr&gt;<br/>&lt;/table&gt;<br/>&lt;/form&gt;<br/>&lt;/body&gt;<br/>&lt;/html&gt;</td></tr></table><br/>我们看到,在这里我们不得不将ASP代码和HTML混在一起,使得代码非常的难以看懂,想象一下如果一个非常复杂的页面……<br/>我们的页面首先判断是否是回传,还是第一次访问。我们通过检查Request.Form集合。如果是0,表示是第一次访问,否则表示提交的按钮被按下了,我们将通过Response.Write输出一条信息给用户。<br/><table width="580" border="1" cellspacing="0" cellpadding="0" bordercolorlight="black" bordercolordark="#ffffff"><tr><td bgcolor="e6e6e6" class="code">&lt;%<br/>If Request.Form.Count &lt;&gt; 0 Then<br/>Response.Write &quot;Your name is &quot;<br/>Response.Write Request.Form(&quot;txtName&quot;)<br/>Response.Write &quot;, and your favoritecolor is &quot;<br/>Response.Write Request.Form(&quot;selColor&quot;)<br/>Response.Write &quot;&lt;br&gt;&quot;<br/>End If<br/>%&gt;</td></tr></table><br/>对于我们表单中的每个元素,我们必须通过代码来使它们保持状态。这些代码简单而相似。<br/><table width="580" border="1" cellspacing="0" cellpadding="0" bordercolorlight="black" bordercolordark="#ffffff"><tr><td bgcolor="e6e6e6" class="code">&lt;td&gt;&lt;input type=&quot;text&quot;name= txtNamevalue=&quot;&lt;%=Request.Form(&quot;txtName&quot;)%&gt;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;<br/>...<br/>&lt;select name=selColor&gt;<br/>&lt;option &lt;%if Request.Form(&quot;selColor&quot;)= &quot;Black&quot; Then Response.Write &quot;selected&quot;%&gt;&gt;Black&lt;/option&gt;<br/>&lt;option &lt;%if Request.Form(&quot;selColor&quot;)= &quot;Blue&quot; Then Response.Write &quot;selected&quot;%&gt;&gt;Blue&lt;/option&gt;<br/>&lt;option &lt;%if Request.Form(&quot;selColor&quot;)= &quot;Green&quot; Then Response.Write &quot;selected&quot;%&gt;&gt;Green&lt;/option&gt;<br/>&lt;option &lt;%if Request.Form(&quot;selColor&quot;)= &quotink&quot; Then Response.Write &quot;selected&quot;%&gt;&gtink&lt;/option&gt;<br/>&lt;option &lt;%if Request.Form(&quot;selColor&quot;)= &quot;Red&quot; Then Response.Write &quot;selected&quot;%&gt;&gt;Red&lt;/option&gt;<br/>&lt;/select&gt;</td></tr></table><br/>ASP.NET的一个好处就是简单。常见普通的一些功能不再需要写许多代码。简单的声明一个服务端控件就可以提供很多功能。<br/><br/><b>这是ASP.NET中的页面</b><br/><div align="center"><img  src="http://www.hh010.com/upload_files/article/244/9_r13y3k8595.gif"></div><br/><table width="580" border="1" cellspacing="0" cellpadding="0" bordercolorlight="black" bordercolordark="#ffffff"><tr><td bgcolor="e6e6e6" class="code">&lt;%@ Page Language=&quot;vb&quot; %&gt;<br/>&lt;html&gt;<br/>&lt;head&gt;<br/>&lt;title&gt;2000081402&lt;/title&gt;<br/>&lt;script language=&quot;vb&quot; runat=server&gt;<br/>Sub Page_Load(Source As Object,E AsEventArgs)<br/>If Page.IsPostBack Then<br/>divResults.innerText=&quot;Your name is&quot; &amp; txtName.Value &amp; _<br/>&quot;, and your favorite color is &quot;&amp; selColor.Value<br/>End If<br/>End Sub<br/>&lt;/script&gt;<br/>&lt;/head&gt;<br/>&lt;body&gt;<br/>&lt;form id=&quot;sample1&quot; method=&quot;post&quot;runat=server&gt;<br/>&lt;div id=divResults runat=server /&gt;<br/>&lt;table cellSpacing=0 cellPadding=4 border=0&gt;<br/>&lt;tr&gt;<br/>&lt;td&gt;<br/>&lt;p align=right&gt;What is your name:&lt;/p&gt;&lt;/td&gt;<br/>&lt;td&gt;&lt;input type=&quot;text&quot;id=txtName runat=server /&gt;&lt;/td&gt;&lt;/tr&gt;<br/>&lt;tr&gt;<br/>&lt;td&gt;<br/>&lt;p align=right&gt;What is your favoritecolor:&lt;/p&gt;&lt;/td&gt;<br/>&lt;td&gt;<br/>&lt;select id=selColor runat=server&gt;<br/>&lt;option&gt;Black&lt;/option&gt;<br/>&lt;option&gt;Blue&lt;/option&gt;<br/>&lt;option&gt;Green&lt;/option&gt;<br/>&lt;option&gtink&lt;/option&gt;<br/>&lt;option&gt;Red&lt;/option&gt;<br/>&lt;/select&gt;<br/>&lt;/td&gt;&lt;/tr&gt;<br/>&lt;tr&gt;<br/>&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;td&gt;<br/>&lt;input type=&quot;submit&quot; id=submitvalue=&quot;Submit&quot; runat=server/&gt;<br/>&lt;/td&gt;&lt;/tr&gt;<br/>&lt;/table&gt;<br/>&lt;/form&gt;<br/>&lt;/body&gt;<br/>&lt;/html&gt;</td></tr></table><br/><br/><b>"runat=server"属性</b><br/>给普通的HTML元素加上"runat=server"的属性,它就成了ASP.NET的服务端控件。我们可以通过ID编程访问这些服务端控件。我们不再使用Response.Write来输出信息(虽然我们还是可以使用的),我们通过一个服务端的DIV标记来输出信息给用户。<br/><table width="580" border="1" cellspacing="0" cellpadding="0" bordercolorlight="black" bordercolordark="#ffffff"><tr><td bgcolor="e6e6e6" class="code">&lt;div id=divResults runat=server /&gt;</td></tr></table><br/>我们可以编程改变服务端控件的属性如"innerText"。<br/><br/><b>age_Load事件和IsPostBack Method方法</b><br/>首先,我们要检查是不是第一次访问。由于这是一个常规的检查,ASP.NET提供了一个页面的方法:IsPostBack。这个方法当页面是提交时返回真,第一次访问的话返回false。我们可以在任何的服务器端代码中进行检查。我们是在Page_Load事件中检查的。<br/>就像我上面说的,每一个服务端控件都是一个对象,包括Page。作为一个对象,我们能访问对象的属性,方法和事件如Page_Load。当页面被调用时,这个事件就被触发了,事件的代码就被执行了。如果Page.IsPostBack返回真,这是用Div控件的innerText属性输出信息。例外,由于Form中的元素都是服务端控件,我们可以直接来访问他们的属性而不用使用Request.Form。我们可以通过控件的ID来访问Value这个属性来得到值。<br/><table width="580" border="1" cellspacing="0" cellpadding="0" bordercolorlight="black" bordercolordark="#ffffff"><tr><td bgcolor="e6e6e6" class="code">&lt;script language=&quot;vb&quot; runat=server&gt;<br/>Sub Page_Load(Source As Object,E AsEventArgs)<br/>If Page.IsPostBack Then<br/>divResults.innerText=&quot;Your name is&quot; &amp; txtName.Value &amp; _<br/>&quot;, and your favorite color is &quot;&amp; selColor.Value<br/>End If<br/>End Sub<br/>&lt;/script&gt;</td></tr></table><br/><b>管理状态</b><br/>由于我们所有的元素都是服务端控件了,所以它们的状态都是自动管理的。这种状态管理使用过页面中的一个隐藏字段来完成的。<br/>下面是在浏览其中网页的源程序。<br/><table width="580" border="1" cellspacing="0" cellpadding="0" bordercolorlight="black" bordercolordark="#ffffff"><tr><td bgcolor="e6e6e6" class="code">&lt;html&gt;<br/>&lt;head&gt;<br/>&lt;title&gt;2000081402&lt;/title&gt;<br/>&lt;/head&gt;<br/>&lt;body&gt;<br/>&lt;FORM name=&quot;sample1&quot; method=&quot;post&quot;action=&quot;sample1.aspx&quot; id=&quot;sample1&quot;&gt;<br/>&lt;INPUT type=&quot;hidden&quot; name=&quot;__VIEWSTATE&quot;value=&quot;a0z1019323966_a0z_hz5z2x_a0z_hz5z1x_a0zhzinnerhtml_Yourname is Doug Seven, and your favorite coloris Greenx_xxxxx_x&quot;&gt;<br/>&lt;div id=&quot;strResults&quot;&gt;Yourname is Doug Seven, and your favorite coloris Green&lt;/div&gt;<br/>&lt;table cellSpacing=0 cellPadding=4 border=0&gt;<br/>&lt;tr&gt;<br/>&lt;td&gt;<br/>&lt;p align=right&gt;What is your name:&lt;/p&gt;&lt;/td&gt;<br/>&lt;td&gt;&lt;INPUT value=&quot;Doug Seven&quot;name=&quot;txtName&quot; id=&quot;txtName&quot;type=&quot;text&quot;&gt;&lt;/td&gt;&lt;/tr&gt;<br/>&lt;tr&gt;<br/>&lt;td&gt;<br/>&lt;p align=right&gt;What is your favoritecolor:&lt;/p&gt;&lt;/td&gt;<br/>&lt;td&gt;<br/>&lt;SELECT name=&quot;selColor&quot; id=&quot;selColor&quot;&gt;<br/>&lt;OPTION value=&quot;Black&quot;&gt;Black&lt;/OPTION&gt;<br/>&lt;OPTION value=&quot;Blue&quot;&gt;Blue&lt;/OPTION&gt;<br/>&lt;OPTION selected value=&quot;Green&quot;&gt;Green&lt;/OPTION&gt;<br/>&lt;OPTION value=&quotink&quot;&gtink&lt;/OPTION&gt;<br/>&lt;OPTION value=&quot;Red&quot;&gt;Red&lt;/OPTION&gt;<br/>&lt;/SELECT&gt;<br/>&lt;/td&gt;&lt;/tr&gt;<br/>&lt;tr&gt;<br/>&lt;td&gt;&lt;/td&gt;<br/>&lt;td&gt;&lt;INPUT name=&quot;submit&quot;id=&quot;submit&quot; type=&quot;submit&quot;value=&quot;Submit&quot;&gt;&lt;/td&gt;&lt;/tr&gt;<br/>&lt;/table&gt;<br/>&lt;/FORM&gt;<br/>&lt;/body&gt;<br/>&lt;/html&gt;</td></tr></table><br/>我们通过这种方法来管理状态,不必考虑服务器的内存使用,而且由于状态是在一个隐藏的字段中,它能在Web Farm或Web Garden中很好的运行。<br/>在这篇文章里,我们一起看了ASP.NET的Web Form的基本结构。我们从程序中就能看到通过使用服务端控件能减少许多代码量,能更容易的控制输出。<br/><br/>(责任编辑 <ccid_nobr>尤北</ccid_nobr>)<p ></ccid_nobr><p align="center"></p></p>
您需要登录后才可以回帖 登录 | 论坛注册

本版积分规则

QQ|Archiver|手机版|小黑屋|sitemap|鸿鹄论坛 ( 京ICP备14027439号 )  

GMT+8, 2025-4-4 03:40 , Processed in 0.066537 second(s), 24 queries , Redis On.  

  Powered by Discuz!

  © 2001-2025 HH010.COM

快速回复 返回顶部 返回列表