asp+中文教程(二)---- Asp+ Web Forms
2024-05-04 11:06:26
供稿:网友
中国最大的web开发资源网站及技术社区,
asp + web forms ,一个微软的新名词,照它自己的话说,asp + web forms页面框架是一个可升级的ngws runtime编程模型,可以在服务器上动态产生网页。不太好懂是吗,其实说白了,和html的表单一样,但它可以在服务器端动态改变,而不象静态html表单那样一旦生成就无法改变,当然,用dhtml或remote script也可以做到动态改变,但毕竟不是很方便。那么,究竟web forms是个什么样呢?其实你已经见过了,记得上次我给的那个例子吗,没错,那就是一个web forms ,不过由于那个例子里全是静态html,所以当你按下”lookup”按钮时只不过是提交一次表单而已,什么都没有发生,现在让我们来看一个真正意义上的web forms ,它带有一个广告轮换控制,一个文本输入框,一个选择框、一个按钮和一个文本标签,代码如下。
file : intro6.aspx
<html>
<head>
<link rel="stylesheet"href="intro.css">
</head>
<script language="c#" runat=server>
void submitbtn_click(object sender, eventargs e) {
message.text = "hi " + name.text + ", you selected: " + category.selecteditem;
}
</script>
<body>
<center>
<form action="intro6.aspx" method="post" runat="server">
<asp:adrotator advertisementfile="ads.xml" bordercolor="black" borderwidth=1 runat="server"/>
<h3> name: <asp:textbox id="name" runat="server"/>
category: <asp:dropdownlist id="category" runat=server>
<asp:listitem>psychology</asp:listitem>
<asp:listitem>business</asp:listitem>
<asp:listitem>popular_comp</asp:listitem>
</asp:dropdownlist>
<asp:button type=submit text="lookup" onclick="submitbtn_click" runat="server"/>
<p>
<asp:label id="message" runat="server"/>
</form>
</center>
</body>
</html>
好了,现在我们来具体看一下这个asp+ 程序和asp到底有什么不同,首先你可能注意到,原来asp的<% %>脚本定界符不见了,取而代之的是<script language=…>,说实话,原来我最痛恨的就是这个<% %>了,尤其是在html中混用的时候,简直不象一种编程语言,你要从这样一段程序里看出程序流程来,简直比登天还难,现在好了。当然这不是说你现在不能用<% %>,毕竟它是向前兼容asp的嘛,不过我还是尽量少用为妙。看下面一段:
<script language="c#" runat=server>
void submitbtn_click(object sender, eventargs e) {
message.text = "hi " + name.text + ", you selected: " + category.selecteditem;
}
</script>
用过c的朋友是不是觉得很熟悉?没错,这是用c#写的一个事件处理函数,void submitbtn_click(object sender , eventargs e) ,你可能一看就明白了,void代表该函数没有返回值,该函数带有两个参数, 代码只有一行,你可能注意到这行代码中的message、name、category你并没有定义,那么它们从哪里来的呢?看下面的代码:
<form action="intro6.aspx" method="post" runat="server">
<asp:adrotator advertisementfile="ads.xml" bordercolor="black" borderwidth=1 runat="server"/>
<h3> name: <asp:textbox id="name" runat="server"/>
category: <asp:dropdownlist id="category" runat=server>
<asp:listitem>psychology</asp:listitem>
<asp:listitem>business</asp:listitem>
<asp:listitem>popular_comp</asp:listitem>
</asp:dropdownlist>
<asp:button type=submit text="lookup" onclick="submitbtn_click" runat="server"/>
<p>
<asp:label id="message" runat="server"/>
</form>
这个表单的写法和html表单完全不同了吧?首先,所有的表单项包括表单本身后面都加上了runat=server,这句话的意思就是说这个是服务器端控制项,另外象传统表单的什么<input type=text>等的写法都变了,你仔细观察一下可以看出,原来的文本框变为<asp:textbox>,选择框变为<asp:dropdownlist> , 选择框选项变为<asp:listitem>,而submit按钮变为<asp:button>,这个按钮对应的控制函数就刚才我提到的那个submitbtn_click函数,它是运行在服务器端的。另外还有一个服务器端控制<asp:label id=”message” runat=”server”/>,这个asp:label是传统表单所没有的,它是一个服务器端文本控制,那么就存在一个问题,如果传统的html里没有这个元素,那么asp+是怎么接收的呢?你运行一下这个程序,然后看一下html源码,你会发现这么一行:
<input type="hidden" name="__viewstate" value="a0z-1715863018__x">
对,asp+就是通过这个隐藏表单的形式传递过去的。
在<form>标记下有这么一行代码:
<asp:adrotator advertisementfile="ads.xml" bordercolor="black" borderwidth=1 runat="server"/>
asp:adrotator,这也是一个服务器端控制,看名字你就知道了,广告轮换嘛,不过相对asp,它现在不是使用内置组件,而是作为一个服务器端控制,控制它显示的就是这个ads.xml,代码如下:
file ads.xml:
<advertisements>
<ad>
<imageurl>/quickstart/aspplus/images/banner1.gif</imageurl>
<targeturl>http://www.microsoft.com</targeturl>
<alternatetext>alt text</alternatetext>
<keyword>computers</keyword>
<impressions>80</impressions>
</ad>
<ad>
<imageurl>/quickstart/aspplus/images/banner2.gif</imageurl>
<targeturl>http://www.microsoft.com</targeturl>
<alternatetext>alt text</alternatetext>
<keyword>computers</keyword>
<impressions>80</impressions>
</ad>
<ad>
<imageurl>/quickstart/aspplus/images/banner3.gif</imageurl>
<targeturl>http://www.microsoft.com</targeturl>
<alternatetext>alt text</alternatetext>
<keyword>computers</keyword>
<impressions>80</impressions>
</ad>
</advertisements>
自己看一下吧,我就不详细解释了。
好了,现在再运行一遍这个程序,好好体会一下它与asp的区别,准备下次的内容。