📄 0041.htm
字号:
</FONT></PRE><!-- @@END -->
<P>现在你就能看到ASP+如何比ASP简单了。下面是执行的结果,和ASP编写的没有区别: </P>
<P><IMG src="images/20000712_4.gif"></P>
<H4><FONT color=#0000ff><B>服务器是怎样工作的?!?</B></FONT></H4>
<P>这些数据是怎样获得的呢!?这里的关键是runat="server"
属性.为了有一个感性认识,我们先看看这个页面的HTML源代码:</P><!-- @@START --><PRE class=CodeForeground><FONT color=#3333ff><HTML>
<BODY>
You selected 'Windows 98' for machine 'tizzy'.
<FORM name="ctrl0" method="post" action="pageone.aspx" id="ctrl0">
<INPUT type="hidden" name="__VIEWSTATE" value="a0z1741688109__x">
Machine Name:
<INPUT type="text" id="txtName" name="txtName" value="tizzy">
<P />
Operating System:
<SELECT id="selOpSys" size="1" name="selOpSys">
<OPTION value="Windows 95">Windows 95</OPTION>
<OPTION selected value="Windows 98">Windows 98</OPTION>
<OPTION value="Windows NT4">Windows NT4</OPTION>
<OPTION value="Windows 2000">Windows 2000</OPTION>
</SELECT>
<P />
<INPUT type="submit" value="Submit">
</FORM>
</BODY>
</HTML>
</FONT></PRE><!-- @@END -->
<P>我们使用下面的代码在ASP+创建<form>:</P><!-- @@START --><PRE class=CodeForeground><FONT color=#3333ff><FORM runat="server">
...
</FORM></FONT>
</PRE><!-- @@END -->
<P>当这个页面被ASP+执行后,输出到浏览器上的代码是:</P><!-- @@START --><PRE class=CodeForeground><FONT color=#0000ff><FORM name="ctrl0" method="post" action="pageone.aspx" id="ctrl0">
...
</FORM</FONT>>
</PRE><!-- @@END -->
<P>你现在看到ASP+自动加上了action和method方法,因此这个页面将会以post方式进行提交。ASP+同时也给form加上了一个唯一值的id和name值,而这些我们根本就没有指定(不过你也可以指定,指定后以你指定的为准)
</P>
<CENTER>
<TABLE bgColor=#eaeaea border=1 borderColor=#000000
width="70%">
<TBODY>
<TR>
<TD>如果你在加了"GET"属性,这个form就会以querystring方式被接收,就和以前的ASP一样,这个自动状态也不会工作的。</TD></TR></TBODY></TABLE></CENTER>
<P>在这个页面中我们使用下面的代码建立text项:</P><!-- @@START --><PRE class=CodeForeground><FONT color=#3333ff><INPUT type="text" id="txtName" runat="server"></FONT>
</PRE><!-- @@END -->
<P>在浏览器中的结果是:</P><!-- @@START --><PRE class=CodeForeground><FONT color=#3333ff><INPUT type="text" id="txtName" name="txtName" value="tizzy">
</FONT></PRE><!-- @@END -->
<P>你也能看到ASP+自动加上了value属性以及它的值。同时也加上了name属性,此值与id的值一样.</P>
<P>下面是<select>代码:</P><!-- @@START --><PRE class=CodeForeground> <FONT color=#3333ff><SELECT id="selOpSys" size="1" runat="server">
<OPTION>Windows 95</OPTION>
<OPTION>Windows 98</OPTION>
<OPTION>Windows NT4</OPTION>
<OPTION>Windows 2000</OPTION>
</SELECT>
</FONT></PRE><!-- @@END -->
<P>ASP+因为在<option>元素中有了selected属性,所以有了下面的代码:</P><!-- @@START --><PRE class=CodeForeground> <FONT color=#3333ff><SELECT name="selOpSys" id="selOpSys" size="1">
<OPTION value="Windows 95">Windows 95</OPTION>
<OPTION selected value="Windows 98">Windows 98</OPTION>
<OPTION value="Windows NT4">Windows NT4</OPTION>
<OPTION value="Windows 2000">Windows 2000</OPTION>
</SELECT>
</FONT></PRE><!-- @@END -->
<P>这里,id属性又一次被建立了,<option>中的value元素的值也被自动匹配。(如果你提供了自个的value属性,那么系统还是依你的)</P>
<CENTER>
<TABLE bgColor=#eaeaea border=1 borderColor=#000000
width="70%">
<TBODY>
<TR>
<TD>因此,正如你看到的,这里实在是没有什么鬼把戏,这里是标准的HTML,没有任何客户端的脚本库,也没有ActiveX或者Java
Applets.</TD></TR></TBODY></TABLE></CENTER>
<H4><FONT color=#0000ff>ASP+的服务器代码</FONT></H4>
<P>为了在页面中显示这些值,我们使用和上面ASP例子中相近的代码: </P><!-- @@START --><PRE class=CodeForeground> <FONT color=#3333ff>...
If Len(Request.Form("selOpSys")) > 0 Then
strOpSys = Request.Form("selOpSys")
strName = Request.Form("txtName")
Response.Write("You selected '" & strOpSys _
& "' for machine '" & strName & "'.")
End If
...
</FONT></PRE><!-- @@END -->
<P>ASP+和服务控制的另外一个巨大的好处就是能够在服务器上执行代码并且创建输出。ASP+强调每一个元素只有一个唯一的id属性,因此服务控制(也就是说有runat="server"的元素)必须依赖原始代码。这也就是说我们不需要使用request集合去访问客户端传来的值,只要使用唯一的id就行了.</P><!-- @@START --><PRE class=CodeForeground> <FONT color=#3333ff>...
If Len(selOpSys.value) > 0 Then
Response.Write("You selected '" & selOpSys.value _
& "' for machine '" & txtName.value & "'.")
End If
...
</FONT></PRE><!-- @@END -->
<H4><FONT color=#0000ff><B>ASP+中的VB代码</B></FONT></H4>
<P>在我们刚才看到的ASP页面中,脚本语言是使用的vbscript(它不是唯一的,但是如果没有别的设定,那么它就是被默认的语言).在ASP+中,它再也不支持VBscript了,它的默认语言是Visual
Basic(VB),因此我们的代码会被编译成为IL(Intermediate Language).</P>
<P>在新的VB7.0中vb的编译器已经包括了ASP+(哈哈,是不是一个好消息了,我们不需要重新买东东了)。在这个新版本中,一个最值得注意的就是在VB7中所有方法都必须有以圆括号包含的参数列表。而这个要求在VBscript和以前的VB版本中是不需要的。</P>
<H3><FONT color=#0000ff>服务器事件的执行。</FONT></H3>
<P>当然,如果你想让一些HTML元素在服务器上执行,那么为什么不把这个概念再扩展一下?!ASP+已经将每一个页面变成了一个服务器对象,同时提供了很多属性,方法和事件,这一切能够在你的页面中很好的利用。每个页面变成了COM+对象上的一个节点,当它们被请求时能够独立的运行和编写。
</P>
<H4><FONT color=#0000ff>使用服务器端的控制事件</FONT></H4>
<P>好好看一下下面的代码,看看,我们是如何利用ASP+的优点来完美地结构化我们的页面。</P><!-- @@START --><PRE class=CodeForeground><FONT color=#3333ff><HTML>
<BODY>
<B><SCRIPT language="VB" runat="server">
Sub ShowValues(Sender As Object, Args As EventArgs)
divResult.innerText = "You selected '" _
& selOpSys.value & "' for machine '" _
& txtName.value & "'."
End Sub
</SCRIPT>
<DIV id="divResult" runat="server"></DIV></B>
<FORM runat="server">
Machine Name:
<INPUT type="text" id="txtName" runat="server">
<P />
Operating System:
<select id="selOpSys" size="1" runat="server">
<OPTION>Windows 95</OPTION>
<OPTION>Windows 98</OPTION>
<OPTION>Windows NT4</OPTION>
<OPTION>Windows 2000</OPTION>
</SELECT>
<P />
<INPUT type="submit" value="Submit"
<B>runat="server" onserverclick="ShowValues"></B>
</FORM>
</BODY>
</HTML></FONT>
</PRE><!-- @@END -->
<P>首先请注意我们在<script>中指定VB是当前语言,并且有一个runat="server"的属性.在里面我们写了一个名叫showValues的VB的函数(在ASP+中,函数和子程序必须得放在<script>中,并不是<%
....%>之间)</P>
<P>我们也添加了一个有着runat="server"的HTML标签<div>。因此这个元素会在服务器上创建。当这个VB子程序被执行时,它将使用<div>元素的innerText属性.
</P>
<P>同样我们也得注意一下它是如果取得请求值的。因为这个text
box以及<select>列表也是在服务器上执行的,我们的程序能够直接通过访问这些控制的value属性获取它们的值,这个<div>元素执行后的代码会是下面的样子:</P><!-- @@START --><PRE class=CodeForeground><FONT color=#0000ff><DIV id="divResult">You selected 'Windows NT4' for machine 'lewis'.</DIV></FONT>
</PRE><!-- @@END -->
<H4><FONT color=#0000ff>联接服务控制事件</FONT></H4>
<P>到目前为此,你可能会问这个VB子程序是怎样执行的!?很简单,我们在<input>元素中建立了一个submit按钮,并且加上了两个新的属性:
</P><!-- @@START --><PRE class=CodeForeground><FONT color=#0000ff><INPUT type="submit" value="Submit"
<B>runat="server" onserverclick="ShowValues"></B></FONT>
</PRE><!-- @@END -->
<P>这个runat="server"属性转换HTML成服务控制,它是"可见的"。这个onserverclick="showValue"属性告诉runtime它将会在被点击后执行ShowValues子程序.</P>
<P>这个代码执行的结果和前面的例子没有什么两样,但是ASP+的代码便比以前更结构化了,这样就增加了文件的可读性。</P>
<P><IMG src="images/20000712_5.gif"></P>
<P>有时间,我们下面几篇文章将介绍,ASP+一些更加具体的问题。现在,很忙,没有时间啦.</P></DIV>
</table>
<p align="center"><script src="../../2.js"></script></a>
</body>
</html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -