学习ASP.NET的体会(一)

原创 2003年08月20日 11:09:00
  ASP.NET中,整张Web页是放在一张大表单里面的。如:

<HTML>

<HEAD><TITLE>********</TITLE>

</HEAD>

<BODY>

<FORM NAME=”FORM1” ACTION=”*****”>

网页的具体内容……<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

</FORM>

</BODY>

</HTML>

       在这个表单内可能放置了很多html控件如按钮、下拉菜单、文本框等。ASP.NET提供了一些服务器端Web控件。在服务器上执行的时候,通过一定的条件,Web窗体将这些服务器Web控件转换为普通的html控件。比如一个按钮:

       <asp:Button id="B_submit" runat="server" Width="37" Height="22" Text="确定" BackColor="DodgerBlue" BorderColor="Lavender" ForeColor="White"></asp:Button>

       经过转换后就变成了:

<input type="submit" name="B_submit" value="确定" id="B_submit" style="color:White;background-color:DodgerBlue;border-color:Lavender;height:22px;width:37px;" />

       其实asp.net利用的还是现有的一些技术。只不过它对这些现有技术进行了封装,使你在使用中将自己提高到了一个应用的层面上。

       asp.net中,一个web窗体被看成了一个对象。它的数据成员就是那些Web控件和你自己定义的变量,它的函数成员就是那些用来响应客户端操作的函数,当然还有你自己定义的函数。我大致讲一下用户请求一张web页的时候发生了一些什么事件:

       说明:一张web页由三个文件来实现:HTML、后台程序代码、资源文件。

       假定:web页中有一个标签控件和一个按钮控件,在初始的时候,标签控件的文本为:“初始”,当用户点击按钮以后,标签控件的文本变为了:“点击”

       首先,用户第一次请求页面时,先执行web页的Page_Init过程,在这里通常对组件进行初始化。然后执行Page_Load过程,在这里,我们可以做一些初始化的工作。比如:设定标签控件的文本为:“初始”。然后,由于用户是第一次请求页面,所以没有什么其他事件发生。程序控制转为解释执行HTML代码页中的服务器代码。在HTML中,有一个<asp:label>这就是我们的标签控件。因为我们在Page_Load过程中对标签的文本赋值了,所以现在程序在将<asp:label>转换为<span id="Label1" style="width:102px;">初始</span>。而按钮的转换就类似于上面我已经说过内容。经过这些转换以后,HTML页内的代码变成了标准的代码。然后,这些代码被用户浏览器得到了。经过解析后,用户就可以看到一个“初始”和一个按钮。

    现在,用户对着按钮点击了一下。于是,表单就提交了。(提交的细节,我下面再说)

    通过提交的表单,服务器得知这是用户点击了按钮控件。并且这是用户第二次请求该页面了。于是,程序又执行Page_Init过程、Page_Load过程。这时,因为用户点击了按钮控件,则程序开始执行另一个函数,这个函数是用来专门处理用户点击了按钮控件这个事件的。在这里,我们将标签控件的文本设置为:“点击”。然后程序控制又转到HTML页。跟上面第一次请求时一样。于是用户在客户端通过浏览器就可以看到一个“点击”和一个按钮了。

    实际使用中,后台的程序代码是被编译成二进制代码了的。

    下面说说提交表单的细节。

    用户的操作通常会产生一些事件,但是都是一些客户端事件。就是说这些跟服务器是无关的。    要与服务器取得联系就要通过请求。微软选择了提交。

    在.net中,web窗体的内容都放在了一个大表单里。对于按钮,微软都将它们转换为了<input type=submit>就是html里的提交按钮。因为每个按钮的id、name不同,所以,服务器可以分辨出用户按的是哪一个按钮,进而产生相应的服务器事件。如上面例子里的用户点击按钮事件。并进行相应的操作。对于其他的控件如下拉菜单,如果希望在用户改变了菜单的选择项以后由服务器进行处理,则也需要将客户端事件转换为服务器端事件。. net在表单里添加了几个<input type=hidden>。当用户改变菜单选择项以后,会产生一个客户端事件 onchange。微软提供了一个通用的函数_dopostback(); 查看网页源文件可以看到,在下拉菜单里有onchange="__doPostBack('Drop_subject','')"。下面是这个函数的源码:

function __doPostBack (eventTarget, eventArgument) {

              var theform = document.Form1;//Form1是表单的名字

              theform.__EVENTTARGET.value = eventTarget;// __EVENTTARGEThidden

              theform.__EVENTARGUMENT.value = eventArgument;// __EVENTARGUMENThidden

              theform.submit();//提交表单

       }

其实您可以看到,.net是通过隐藏控件来传递客户端信息的,例如产生事件的控件的名字。然后,提交表单。这样,服务器端就可以根据隐藏控件来确定产生事件的控件的名字,并产生服务器事件,进而对该事件进行处理。

       可以看到, Asp.net相对与asp 3.0不同的地方在于.net对很多功能进行了封装,并且提供了很多新的服务器组件。使得程序的编写更加简单。在asp3.0中,程序代码全部是嵌入HTML代码中的。好处在于灵活度较高,但是却不容易在同一张网页中加入很多功能(因为面对大量嵌入HTML代码中的ASP代码,错误的产生是很难避免的)。在asp.net中,这些得到了改观。.net将程序代码与HTML代码分割开了。并且提供了大量方便使用的服务器控件。这使得开发asp.net程序变得很简单。但是在实际使用过程中,我发现如果过于依赖这些控件,程序设计的灵活性将变小。并且在使用过程中还发现了不少bug

ASP.NET总结——静态网页与动态网页

刚刚看完《北大青鸟ASP.NET》视频的前六集。这六集视频给我太多太多听觉和视觉上的“刺激”(太卡了)。尽管如此,在视频当中,我依然接触了许多新的概念,知识。(其实也不算新,只是这次好像正式了些。)之...
  • u010924834
  • u010924834
  • 2014年09月07日 21:35
  • 1841

c++程序设计心得体会一

C语言是计算机程序设计的重要理论基础,在我们以后的学习和工作中都有着十分重要的地位。要学好这种语言,仅仅学习课本上的知识是不够的,还要经常自己动手,有较强的实践能力。只有多动手,经常编写程序,才能发现...
  • whChina
  • whChina
  • 2016年04月28日 14:26
  • 2553

七天学会ASP.NET MVC (一)——深入理解ASP.NET MVC

ASP.NET vs MVC vs WebForms 许多ASP.NET开发人员开始接触MVC认为MVC与ASP.NET完全没有关系,是一个全新的Web开发,事实上ASP.NET是创建WEB应用...
  • sunkooshining
  • sunkooshining
  • 2016年07月18日 17:15
  • 12251

基于ASP.NET的微信开发心得体会(一)

本人今年研一,在一所普通的211大学就读。。。。本科研究生都是这儿,从导师那里接手一个微信开发的项目(本人的第一个正式项目),一共三个人,成为一个小Team(其实就是一个研二的学长,我,外加一个大四学...
  • u012961566
  • u012961566
  • 2015年12月19日 21:18
  • 522

基于ASP.NET的微信开发心得体会(二)

项目框架:         说白了,之前一直没有接触过什么框架,对框架这个概念,更是一无所知,举个例子。。。在本科的时候,写的一些最基本的大作业(如XXX管理系统什么的),对于数据访问层的功能实现,...
  • u012961566
  • u012961566
  • 2016年01月20日 10:17
  • 593

ASP.Net MVC开发基础学习笔记(7):数据查询页面

 前言 前面铺垫了那么多,今天我们就用MVC5 + EF6 + Bootstrap3来正式创建一个基本查询页面。 为什么从查询页面开始?嘿嘿,因为小弟的.Net生涯就是从查询页面开始的,记得...
  • mss359681091
  • mss359681091
  • 2016年04月18日 16:56
  • 3009

ASP.NET MVC学习---(三)EF简单增删改查

那么现在我们已经大概从本质上了解了ef 巴拉巴拉说了一大堆之后 总算要进入ef的正题了 总在口头说也太不行了是吧~ 没错,现在要用ef进行一些实际的操作 做什么呢? 就做一个入门级的增...
  • qq1010885678
  • qq1010885678
  • 2014年07月31日 19:43
  • 5892

ASP.NET MVC学习---(一)ORM框架,EF实体数据模型简介

现如今 对象关系映射(ORM)框架 被大量的使用于企业级应用的开发 为什么要使用ORM? ADO.NET操作数据库不好吗? 我们可以仔细想想 当我们使用ADO.NET操作数...
  • qq1010885678
  • qq1010885678
  • 2014年07月30日 19:33
  • 3137

黑马程序员_学习笔记15_asp.net之验证码实现原理初探

---------------------- Windows Phone 7手机开发、.Net培训、期待与您交流! ---------------------- 验证码这个功能的出现是为了 防止暴力...
  • gqsloveaspnetverymu
  • gqsloveaspnetverymu
  • 2012年04月10日 14:02
  • 218

asp.net学习心得总结

用了很长时间,总算把天轰穿的视频看完了,中间断断续续被一些事情打断,当时只留下了一些相关的笔记,由于没有针对某些知识点做详细的总结,所以,现在回想起来的时候觉得有点空。       天轰穿的视频...
  • lmdcszh
  • lmdcszh
  • 2012年05月22日 20:31
  • 4969
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:学习ASP.NET的体会(一)
举报原因:
原因补充:

(最多只允许输入30个字)