从asp到asp.net之快速转型[转]http://www./bbs/thread.php?fid=53&page= 问题列表: 1.怎样建立asp.net运行环境? 2.asp直接放在虚拟目录下运行就可以了,那aspx呢? 3.vs.net是怎样建立一个asp.net应用程序的? 4.aspx中的代码究竟是怎样执行的?与asp中有什么区别? 5.用asp的思路理解asp.net--代码文件中的代码怎样控制页面的显示? 6.隐藏代码文件的结构是怎样的? 1.怎样建立asp.net运行环境? asp有了IIS就可以了,而asp.net也很简单,只要在IIS基础上装一个.net Framework。那 么想要运行asp.net就会和运行asp同样简单,参照问题2。 底下是.net Framework1.1的下载地址,直接按照向导安装好就ok了! http://download.microsoft.com/download/7/b/9/7b90644d-1af0-42b9-b76d-a2770319a 568/dotnetfx.exe 2.asp直接放在虚拟目录下运行就可以了,那aspx呢? 答案很简单:完全一样:) 如果你有一个aspx的示例网站,那么直接把它拷贝到你建立的一个虚拟目录下就可以了。 唯一要注意的可能就是如果有webconig文件,一定要直接放到虚拟目录之下,否则会出错 。当然微软对于运行asp.net的解释可能会涉及到更深层面,包括私有,共有程序集,权限 之类,所以他会用“部署”这样一个庞大的词汇,我倒认为对于初学者来说实在有点小题 大作。 而咱们的目标不过是让它先运行起来再说:) 3.vs.net是怎样建立一个asp.net应用程序的? 我使用vs.net开发的,所以只针对这个开发环境:P。vs.net把aspx之类的“网页”集称之 为应用程序,多少有点让初学者迷惑(我一开始就是这样:P),这很容易让人觉得这与a sp几乎完全不一样,其实不然(尽管实现思想上有很大差异),各个网页其实还是相互独 立的,和asp中一样,所以我宁愿还称之为“网页”。vs.net建立一个asp.net程序其实就 是帮你建立一个虚拟目录,然后在这个虚拟目录下建立项目文件(管理多个aspx)。这与D reamwaver或Frontpage中建立一个站点的性质完全一样,建立这样的项目只是为了方便开 发环境来识别出当前项目包括哪些文件,实际运行时项目的概念其实是不存在的。 4.aspx中的代码究竟是怎样执行的?与asp中有什么区别? 按照微软的定义,aspx中的代码在第一次运行是要经过编译的,这与asp中的程序解释执行 有着本质的区别。然而,从运行结果来看,这些区别可以说是完全透明的。理解aspx中的 代码的关键其实是要看的懂代码的结构。和asp结构相同的嵌入式代码我就不说了,那个在 理解了代码隐藏之后很容易明白。 你现在是否对类似这样的aspx开头感到不解?:P <%@ Page CodeBehind="myDatum.aspx.cs" Language="c#" AutoEventWireup="false" In herits="njuJob.myDatum" %> 这是用vs.net建立aspx的典型开头,我想从快速入门的角度看只要了解这几个属性: @ Page就不用说了,就是一个标志来说明底下是对页面的属性描述 Language:使用的语言 CodeBehind:此页面对应的代码存储在哪个文件中 Inherits:页面从哪个类继承,此例子中表示是njuJob命名空间中的myDatum类 后两个属性是必须要理解的 代码隐藏是vs.net独有的功能(好像其它环境不支持),它允许把对应于一个页面的程序 逻辑和表示逻辑作为两个文件分离开来(这是不同于asp的一个明显区别),通常是这样的 结构:sample.aspx对应的代码文件是sample.aspx.cs(使用的c#语言),codebehind中会 自动指明。vs.net在编译时可以将所有的代码隐藏文件编译到一个dll中(所谓的程序集) ,当aspx页面被处理时,处理程序可以从Inherits中找到所继承的类,然后从dll中找到这 个类,并实例化从而执行程序得到输出的html。 可能现在大家对这样的解释没有一个整体的认识,所以请看下面的问题: 5.用asp的思路理解asp.net--代码文件中的代码怎样控制页面的显示? 考虑一个简单的例子,在asp中,如果你想要动态生成一个表格插入到页面中,那么做法通 常是在需要插入的地方加入一段程序和Response.Write语句来实现,稍微变一下,有人可 能会在插入的地方仅加一条语句<%=strTheTalbe%>,而strTheTable的值可能在这之前已经 计算好了,可能是通过一个函数实现的,但这种计算肯定还是包含在这个asp页面中。 现在考虑怎样在asp.net中实现这个过程,我们先引入最简单的一种控件,Literal控件( 关于控件大家应该有个大概的认识,就是一个通用的程序模块之类的意思),这个控件的 功能就是在页面中插入一段字符串,它具有一个text属性,你指定这个属性为一个字符串 ,那么这个字符串就会在生成的html文件的相应位置。这应该很好理解,就跟asp中的<%= strTheTalbe%>的功能几乎完全一样。这个Literal控件在aspx中的声明方式如下: <asp:Literal id="ltlTable"></asp:Literal> 当要使用代码控制这个Literal时,就用下面的语句: ltlTable.Text="<table><tr>……"; 这样就实现了和asp中一样的功能。代码实际上是在隐藏文件中的,在隐藏文件的类中会有 一个声明来包含这样的控件,这种声明通常都是由vs.net自动完成的,即:你在页面中添 加一个控件,vs.net就会为你在代码隐藏文件中加入相应的声明。隐藏文件的结构分析可 以见下一个问题. 相信通过这样的例子大家应该能对asp.net用控件实现文本输出的功能有了一定的了解,其 实更多更复杂的控件的实现原理完全一样,只是它们提供了更多自动话的功能,例如一个 表格控件可以让你直接输出一个表格,而不用自己去写html代码,至于怎样精确的控制生 成的html代码就要靠自己去经验积累和技术提升了。 6.隐藏代码文件的结构是怎样的? 我们来实际分析一个文件: using System; using System.Collections; using System.ComponentModel; using System.Data; using System.Drawing; using System.Web; using System.Web.SessionState; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.HtmlControls; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 以上是说明引用了哪些程序集,这和asp中的包含文件应该类似,只有包含了某个文件才能 使用其中的函数,而这边只用引用了某个程序集,才能使用它提供的控件。 namespace njuJob //说明你的程序集的命名空间(这暂时不必理解) public class myDatum : System.Web.UI.Page //这是asp.net页面对象模型(暂时不必 理解) ~~~~~~~~这个就是aspx头中的继承属性 { System.Web.UI.WebControls.Literal ltlTable; //对aspx页面中的控件的声明 private void Page_Load(object sender, System.EventArgs e) { // 程序实际上是从这里开始执行 ltlTable.Text="……"; MyFunction(); } private void MyFunction() //可以声明你自己的函数以供本页面使用 { } } 这个隐藏文件会被vs.net编译进dll,当aspx被处理时会执行。 |
|