[摘要]第一天我认为ASP.NET比ASP难很多,希望大家做好准备。难难在实现同一个效果有很多方法,大家或许会疑惑。十天学会系列教程会清晰的写出各种方法,让大家能少一点坎坷。在ASP里面,大家几乎都是使用VB,数据库嘛,也无非是SQL和ACCESS。在ASP.NET里面,数据库还是这两个但是常用的语言多了...
第一天我认为ASP.NET比ASP难很多,希望大家做好准备。难难在实现同一个效果有很多方法,大家或许会疑惑。十天学会系列教程会清晰的写出各种方法,让大家能少一点坎坷。在ASP里面,大家几乎都是使用VB,数据库嘛,也无非是SQL和ACCESS。在ASP.NET里面,数据库还是这两个但是常用的语言多了一个C#,也是微软推荐的语言,为.NET平台定制的语言。这样ASP.NET就有四种组合:VB+ACCESS,VB+SQL,C#+ACCESS,C#+SQL,本教程会使用C#+ACCESS,兼顾四种来写,让大家对ASP.NET有一个全面的认识。虽然说学习ASP.NET不需要任何ASP基础,但是我觉得如果大家ASP不会,还是先看一下【十天学会ASP教程】,大家所需要了解的不是ASP的程序怎么写,而是怎么构建服务器,怎么使用HTML表单,同时对SQL语句有一个基础和理解,因为在本文里我不会将将一些基础的东西。 废话不多说,开始我们第一天的学习:
学习目的:调试出安装环境
我要申明一点,操作系统就用2000,如果说要学习一个网络语言还不肯多装一个操作系统的话,那我看也不要学习了。
先到网上下载一个MDAC(要是2.7以上的版本才行),然后安装,安装以后或许会重新启动一次。
然后再下载一个.NET FRAMEWORK SDK,安装以后会在控制面板里面的管理工具里面多两个东西,这个不用理睬他,我们要使用的还是原来的INTERNET服务管理器。打开它按照ASP教程里面的调试方法建立一个目录,建立一个EXAMPLE1.ASPX,然后用记事本打开这个文件在里面输入
<script language="c#" runat="server">
void Page_Load()
{
Response.Write("Hello World!");
}
</script>
<script language="vb" runat="server">
sub page_load()
response.write("Hello World!")
end sub
</script>
然后用本地访问,查看结果:
在这里我要说明两点:1、我的示例文件总是有A和B分别是用C#和VB写的,演示的图片就用C#那一种的,都一样嘛,教程里面代码也是写两种用<hr>分割开,大家可以比较一下。2、我写教程的时候用的都是记事本来编写APS.NET大家也可以安装VS.NET来编写不过起步还是用记事本比较好,因为可以看的更加透彻一点。今天就说到这里,明天说一下C#的基本语法。第二天学习目的:掌握C#的基本知识
一、定义变量:
string strExample; 字符串("aaa")
char chrExample; 字符('a')
bool blnExample; Bool型(true/false)
DataTime datExample; 日期型("09/19/2002")
int intExample; 整数(32位有符号整数)
double dblExample; 浮点数(64位双精度浮点数)
二、各种运算:
= 赋值运算
+ 加法运算
- 减法运算
* 乘法运算
/ 除法运算
% 取模运算
&& 逻辑And
逻辑Or
! 逻辑Not
三、各种结构:
if(条件)
{
}
else
{
}
switch(条件)
{
case option1:
break;
case option2:
break;
}
for(int i=1;i<=10;i++)//特别注意这里面是分号
{
}
while(条件)
{
}
do
{
}while(条件);
四、注意事项:
1、用习惯VB的人很容易漏了语句末尾的分号;
2、用习惯VB的人很随便使用变量但是不申明,这在C#默认情况下是不允许的;
3、在向函数传递参数的时候要用圆括号:Response.Write "aa";是不允许的。我说的这点几乎称不上是在说一种语言,一种语言的学习不仅仅需要学习语法,还需要学习语言特色,希望大家有空还是买一本C#的书来好好研究一下C#作为一种新的语言的特性吧。第三天学习目的:掌握WEB控件的使用(一)
或许你会问,为什么需要WEB控件?WEB控间就好像VB里面的控间,可以在程序的任何地方引用,修改所有属性,有了它的配合才能完成代码分离。想一下,如果还是以前的HTML控间,我们当我们需要在某一个地方显示一段数据库的内容是不是只有用<%= %>这样势必在HTML包含了程序的代码块,就达不到分离代码和界面的目的了。
或许你还会问,为什么要代码分离那?原因很简单,不是每一个程序员都是合格的网页设计师,如果我们需要修改代码的时候会破坏网页设计师原来的设定,是不是不方便那,程序代码和HTML代码混合在一起对于程序员来说也不方便修改代码。当然,我们的网页设计师也需要学习一点WEB控间的知识。
下面来一个一个介绍:
一、Label控件:
主要属性:
Text 标签所显示的文本
范例:<asp:Label id="lblMessage" Text="aaa" runat="server"/>
需要注意的是我们不能遗漏runat="server"字样,还有所有的WEB控件都要包含在<form runat="server"></form>中间
下面看一个完整的例子,在程序里面修改Label的Text属性,以此改变网页的显示。
<script runat="server" language="c#">
void Page_Load()
{
lblMessage.Text="Hello World!";
}
</script>
<html>
<head><title>Label.aspx</title></head>
<body>
<form runat="server">
<asp:Label id="lblMessage" runat="server"/>
</form>
</body>
</html>
<script runat="server" language="vb">
sub Page_Load
lblMessage.Text="Hello World!"
end sub
</script>
<html>
<head><title>Label.aspx</title></head>
<body>
<form runat="server">
<asp:Label id="lblMessage" runat="server"/>
</form>
</body>
</html> 二、TextBox控件:
主要属性:
Text 控件显示的文本;
MaxLength 文本框可以添加的最多的字符数(多行文本框无效);
ReadOnly 只读;
TextMode 有下面几个有效值 MultiLine,Password,SingleLine;
Rows 指定文本框的垂直尺寸
三、Button控件:
有三种:Button 标准的表单按钮;ImageButton 显示图像的表单按钮;LinkButton 显示作为超链接样子Button
Button基本上就是Text属性来设置按钮上面的文字;
ImageButton基本上就是ImageUrl来设置按钮上图象的地址;AlternativeText 在浏览器不支持图片的时候显示的文字;
LinkButton基本上就是Text属性来设置按钮上的文字;
他们三者共同的属性就是CausesValidation=true/false来设置按钮提交的表单是不是被检验(后面将说到检验控件)
他们三者共同的方法就是OnClick就是点击按钮的时候触发的函数,下面举一个例子:
<script runat="server" language="c#">
void btnCounter_OnClick(object sender,EventArgs e)
{
btnCounter.Text="Clicked";
}
</script>
<html>
<head><title>Label.aspx</title></head>
<body>
<form runat="server">
<asp:Button Text="UnClicked" OnClick="btnCounter_OnClick" id="btnCounter" runat="server"/>
</form>
</body>
</html>
<script runat="server" language="vb">
sub btn_COunter_OnClick(s as object,e as eventargs)
btnCounter.Text="Clicked"
end sub
</script>
<html>
<head><title>Label.aspx</title></head>
<body>
<form runat="server">
<asp:Button Text="UnClicked" OnClick="btnCounter_OnClick" id="btnCounter" runat="server"/>
</form>
</body>
</html> 今天就说这三个控件,明天继续。第四天学习目的:掌握WEB控件的使用(二)
首先我要说明,我这十天教程也只是一个让大家对ASP.NET有一个认识而已,我也跳过了很多东西。网上有很多人在责骂我写的教程,认为十天什么都学不会,看了我的教程还是什么都不会,我想他们或许是过高估计了我的教程。外面有很多书,关于ASP和ASP.NET的,我就是看外面的书学会的。我所要做的就是希望大家能看了我的教程以后觉得ASP和ASP.NET不是学不会的东西然后有信心去学会它。我想学习还是靠自己的,外面每一本书也有自己写的不周到的地方,关键还需要自己的实践加上探索。
首先来说一下表单的验证控件,以前我们做表单验证,如果是客户端的JAVASCRIPT,不能做到美观统一,而且还可以通过直接在浏览器起教表单来屏蔽;如果我们做服务器端验证,又会发现让检验结果在前台反映也是很麻烦的事情。现在好了,ASP.NET提供的很多检验控件让我们不需要考虑是客户端检验还是服务器端检验,让我们不需要考虑是怎么输出检验结果。
看一下检验表单控件是不是填写了的检验控件先:
<asp:textbox id="username" runat="server" cssclass="textbox"/>
<asp:requiredfieldvalidator controltovalidate="username" display="dynamic" forecolor="#ff0000" font-name="宋体" font-size="9pt" text="请填写" runat="server"/>
controltovalidate就是你想检验的控件的ID;默认情况下不显示错误消息,地方也会被保留,如果使用了display="dynamic" 那么不显示错误消息的地方不会被空出; forecolor="#ff0000" font-name="宋体" font-size="9pt" 就是设定错误消息字体的颜色,字体,大小的;text="请填写" 就是当没有填写内容时候显示的错误消息;别忘记最后的runat="server"。现在这个检验控件是放在了textbox的后面,那么错误消息也在textbox后面显示,也可以放在其他地方。
再看一下比较表单控件的数据与另外一个数据的检验控件:
<asp:textbox id="password1" runat="server" textmode="password" cssclass="textbox"/>
<asp:requiredfieldvalidator controltovalidate="password1" display="dynamic" forecolor="#ff0000" font-name="宋体" font-size="9pt" text="请填写" runat="server"/>
这里是第一个需要用户填写的密码框
我们经常会再设立一个密码框让用户再填写一次:
<asp:textbox id="password2" runat="server" textmode="password" cssclass="textbox"/>
<asp:requiredfieldvalidator controltovalidate="password2" display="dynamic" forecolor="#ff0000" font-name="宋体" font-size="9pt" text="请填写" runat="server"/>
<asp:comparevalidator controltovalidate="password2" controltocompare="password1" display="dynamic" operator="equal" forecolor="#ff0000" font-name="宋体" font-size="9pt" text="确认失败" runat="server"/>
controltocompare="password1" 就是需要比较的控件;operator="equal" 就是设定比较操作是:是否相等(还有NotEqual:不相等,LessThan:少于,GreaterThan:大于,当不符合这个比较操作的时候显示错误消息)。
以前说到BUTTON控件CausesValidation=true/false来设置按钮提交的表单是不是被检验也就是这里的几个检验控件,如果CausesValidation=true的话按下按钮就会首先检测是不是都通过了检验控件的检验。
下面再说两点:
一、每一个可以显示的控件都有是不是显示的属性,比如username.Visible=false;就是隐藏了前面的username控件;还有就是如果要对控件应用CSS的话就这么写:cssclass="",而不是以前HTML中的class=""。
二、所有WEB控件都要包含在<form runat="server"></form>中,否则就会出错。今天就到此结束,请继续往后面看,下次开始就要说ADO.NET了。第五天学习目的:学会连接两种数据库
对于ASP来说,我们常用的数据库无非是ACCESS和SQL SERVER,对于ASP.NET也是,不过ASP.NET对于SQL SERVER有专门的连接组件而不推荐用OLE DB。
首先看一下ACCESS的连接数据库并打开;
string strConnection="Provider=Microsoft.Jet.OleDb.4.0;Data Source=";
strConnection+=Server.MapPath("*.mdb"); //*就是数据库的名字
OleDbConnection objConnection=new OleDbConnection(strConnection);
objConnection.Open();
dim objConnection as OleDbConnection
objConnection=new OleDbConnection("Provider=Microsoft.Jet.OleDb.4.0;Data Source="+Server.MapPath("*.mdb"))
objConnection.Open()
下面再看一下SQL SERVER的连接数据库并打开;
string strConnection="server=数据库连接;uid=用户名;pwd=密码;database=数据库名字";
SqlConnediob objConnection=new SqlCOnnection(strConnection);
objConnection.Open();
dim objConnection as SqlConnectiom
objConnection=new SqlConnection("server=数据库连接;uid=用户名;pwd=密码;database=数据库名字")
objConnection.Open()
实际上,在大多数地方SQL SERVER和ACCESS的区别除了连接语句,其他定义语句也就是SQL××和OLEDB××的区别另外,如果是ACCESS数据库的话在ASPX文件的开头需要包括下列语句:
<%@Import Namespace="System.Data"%>
<%@Import Namespace="System.Data.OleDb"%>
如果是SQL SERVER则需要包括以下语句:
<%@Import Namespace="System.Data"%>
<%@Import Namespace="System.Data.SqlClient"%> 今天就说到这里,明天开始讲数据库的读取。第六天学习目的:学会读取数据库
有的网友说,不会C#,在ASP.NET里面还是选择VB.NET,这个我不反对,但是我觉得既然是学习新的东西,就不要在意有多少是新的。实际上C#就一般的操作来说,只是区分大小写和多了一个分号这两点与VB.NET不同其他都差不多啊。在ASP里面我们读取数据就直接用RECORDSET,然后在HTML代码里面穿插<%= %>就可以显示了,但是ASP.NET讲究的是代码分离,如果还是这样显示数据就不能代码分离了。所以我们有两种方法:如果是读取一条记录的数据或者不多的数据,我们用DATAREADER采集数据,然后赋值给LABEL控件的Text属性即可;如果是读取大量数据我们就采用DATAGRID。
今天我们就来说一下DATAREADER:
string strConnection="Provider=Microsoft.Jet.OleDb.4.0;Data Source=";
strConnection+=Server.MapPath(strDb);
OleDbConnection objConnection=new OleDbConnection(strConnection);
OleDbCommand objCommand = new OleDbCommand("这里是SQL语句" , objConnection);
objConnection.Open();
OleDbDataReader objDataReader=objCommand.ExecuteReader();
if(objDataReader.Read())
{
oicq.Text=Convert.ToString(objDataReader["useroicq"]);
homesite.Text=Convert.ToString(objDataReader["usersite"]);
face.SelectedItem.Text=Convert.ToString(objDataReader["userface"]);
}
大家可以看到我们首先是连接数据库然后打开,对于select的命令,我们申明一个OleDbCommand来执行之,然后再申明一个OleDbDataReader,来读取数据,用的是ExecuteReader(),objDataReader.Read()就开始读取了,在输出的时候我们要注意Text属性接受的只能是字符串,所以我们要把读出的数据都转化为字符串才行。
转换变量类型函数:
转换为字符串:Convert.ToString()
转换为数字:Convert.ToInt64(),Convert.ToInt32(),Convert.ToInt16() 是按照数字位数由长到短
转换为日期:Convert.ToDateTime()
dim objConnection as OleDbConnection
dim objCommand as OleDbCommand
dim objDataReader as OleDbDataReader
objConnection=new OleDbConnection(Provider=Microsoft.Jet.OleDb.4.0;Data Source="+Server.MapPath(strDb))
objCommand=new OleDbCommand("这里是SQL语句" , objConnection)
objConnection.Open()
objDataReader=objCommand.ExecuteReader()
if objDataReader.Read()
oicq.Text=Convert.ToString(objDataReader["useroicq"])
homesite.Text=Convert.ToString(objDataReader["usersite"])
face.SelectedItem.Text=Convert.ToString(objDataReader["userface"])
end if其实大家比较一下C#和VB的语法,会发觉用C#似乎更加简单,教程里面我侧重C#,对于VB的代码我就不解释了。
下面说一下如果代码是读取SQL数据库,我们这样来转变
1、把代码开始的
<%@Import Namespace="System.Data"%>
<%@Import Namespace="System.Data.OleDb"%>
修改为
<%@Import Namespace="System.Data"%>
<%@Import Namespace="System.Data.SqlClient"%>
2、把代码里面所有申明的对象OleDb××变为Sql××就这么简单
你甚至可以用替换所有来解决,所以今后我讲不再列出Sql Server的代码了。今天就说到这里,明天开始说数据的添加、删除、修改。
……