[YC]从asp到asp.net之快速转型

王朝asp·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

asp用了两年,三个月前开始转入asp.net,并完成了处女作就业中心网站(http://job.n

ju.edu.cn),从一种语言转到另一种,过程总是艰辛的,于是我想把我在转型过程中遇到

的一些曾经很是困惑的问题做成了FAQ的形式,希望能对想转入asp.net的同学有点帮助或

是启示,同时也算是理一理自己的思路吧^_^。

PS:我也是初学者,很多理解显然有点幼稚,并没有涉及到较深的层面,大家就凑合着瞧

瞧吧^_^

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被处理时会执行。

好了,暂时先写这些东西吧,这几个问题都是我刚着手asp.net所感到困惑的,如果你恰好

也有同样的困惑,那我很高兴我写的东西能有所价值,如果有什么理解上的严重错误,还

请高手不吝赐教:)

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航