欢迎光临
我们一直在努力

从零开始学ASP.NET-.NET教程,Asp.Net开发

建站超值云服务器,限时71元/月

第一天

学习目的:

掌握最基本的label、textbox、button控件用法

掌握用stringbuider类连接字符串

理解服务器的环境变量

stringbuilder类:

命名空间是:system.text。

stringbuilder类是个高效的类,stringbuilder.append连接字符串的方法是非常快的。用于连接大量的字符串,其速度的优越性就会体现出来。

先举几个例子:

在cs或vb文件的头部加上

[c#]using system.text;

[vb]imports system.text

[c#]stringbuilder sbfirst = new stringbuilder();

sbfirst.append(“这是第一个学aspnet的例子</br>”);

sbfirst.append( “这个例子太简单</br>”);

sbfirst.append( “连三岁小陔都会做,我早知道了,嘿嘿。”);

response.write(sbfirst.tostring());

[vb]dim sbfirst as stringbuilder = new stringbuilder()

sbfirst.append(“这是第一个学aspnet的例子</br>”)

sbfirst.append( “这个例子太简单</br>”)

sbfirst.append( “连三岁小陔都会做,我早知道了,嘿嘿。”)

response.write(sbfirst.tostring)

下面就可以做正题了:

先建立一个c#的web应用程序工程,这废话我就少说了吧。

放一个button控件:id为btnshowvariable

放一个label控件:id为labservervariable

添加button的单击事件,如下代码

private void btnshowvariable_click(object sender, system.eventargs e)

{

labservervariables.text = "";

stringbuilder info = new stringbuilder();

foreach (object objvar in request.servervariables)

{

info.append("<span style=font-size:9pt>");

info.append(objvar.tostring());

info.append(" = <font color=blue>");

info.append(request.servervariables[objvar.tostring()]);

info.append("</font></span><br>");

}

labservervariables.text = info.tostring();

}

结果显示:

图片如下:

这样我们就可以这样用

response.write(request.servervariables["remote_addr"]); // ip地址

response.write("<br>");

response.write(request.servervariables["url"]); // 网页的url

第二天

学习目的:

掌握文本框的用法

初次接触try…catch…语法

今天内容很轻松,用一个例子,输入年月日,判断输入是否正确

图片如下:

用个文本框,id分别为txtyear,txtmonth,txtdate;

检验按钮的代码为:

private void btncheck_click(object sender, system.eventargs e)

{

int year, month, date;

// 先把输入的字符转成int类型,如果非数字型,

// 会触发错误

try

{

year = convert.toint32(txtyear.text);

month = convert.toint32(txtmonth.text);

date = convert.toint32(txtdate.text);

}

catch

{

labcheckinfo.text = "输入的是非数字字符。";

return;

}

// 如果第一步检验合格,就把输入的数字转化为日期格式

// 如果不符合日期格式即引发错误

try

{

datetime dt = new datetime(year, month, date);

}

catch

{

labcheckinfo.text = "输入的数字不符合日期格式";

return;

}

labcheckinfo.text = "输入正确";

}

嗯,补充一下,关于stringbuider

在处理字符串的时候很多人喜欢+=,其实对于string来说,一旦定义了就无法更改了

所谓的+只是新建的一个新的string变量并赋值

所以对于尽量使用stringbuider的append的方法,这样将大量的节省服务器的资源

第三天

学习目的:

掌握下拉列表框的用法,并理解autopostback属性;

理解isposkback及用法;

初识datatable的增加列、行,与下拉列表框绑定的方法。

今天的内容稍多些,而且涉及一些比较常用的,如ispostback及datatable的基本用法。

知识点:

ispostback:在页面onload之间是false值,而当从服务器回传后,该值变为true。当页面中的button或imagebutton等触发事件,都会把表单回传到服务器,而返回时又会引发onload事件。为了节省服务器资源,有些加载中需进行一次,而不需要在回传后多次发生,可以用!isposkback来作为条件,那么页面第一次加载后,以后就不会发生。该属性可以帮助你提高程序的性能。

datatable:即数据表,.net 程序中最常用的类,特别是数据库开发中,没有该类的程序是不可想象的。

先做个小程序来练练手,很简单,就一个下拉菜单,取名dlstweb。在属性的itmes选项中打开以下对话框,添加各项:

图片如下:

aspx中的代码为:

<asp:dropdownlist id="dlstweb" style="z-index: 101; left: 32px;

position: absolute; top: 32px" runat="server"

width="88px" autopostback="true">

<asp:listitem value="http://www.sina.com.cn">新浪 </asp:listitem>

<asp:listitem value="http://www.sohu.com">搜狐</asp:listitem>

<asp:listitem value="http://www.163.com">网易</asp:listitem>

</asp:dropdownlist>

在下拉框的selectedindexchanged事件中的加入代码:

private void dlstweb_selectedindexchanged(object sender, system.eventargs e)

{

response.write("<script language=javascript>window.open(" +dlstweb.selectedvalue + ");</script>");

}

按f5运行,可是我们发现这下拉框选择时什么事也没发生。原来原因是出在下拉框的autopostback属性上,把它设为true后再试试,一切ok了。

下面我们增加些难度,下拉框中的内容很多情况下不是事先固定的,而是要动态添加。这里设计是用一数据表datatable与之联系起来。

另建一文件,按上添加一下拉框,取名dlstweb,先设autopostpack为false,否则在刚启动而面就触发selectedindexchanged事件,弹出窗口就乱飞了。

在onload事件中添加代码,注意datatable用法及isposkback

datatable属于system.data命名空间,所以如果页面没预添加,可以自行增加这一行。

private void page_load(object sender, system.eventargs e)

{

// 用ispostback判断,只在没有回传时才初始化

// 这样可以防止每次刷新或回传时,都执行一次以下代码

// 可以节省服务器的资源了。

if (!ispostback)

{

datatable dt = new datatable();

datarow dr;

// 在表中增加字段

dt.columns.add("webname", typeof(string));

dt.columns.add("weburl", typeof(string));

// 表中增加行

dr = dt.newrow();

dr["webname"] = "新浪";

dr["weburl"] = "http://www.sina.com.cn";

dt.rows.add(dr);

dr = dt.newrow();

dr["webname"] = "网易";

dr["weburl"] = "http://www.163.com";

dt.rows.add(dr);

dr = dt.newrow();

dr["webname"] = "搜狐";

dr["weburl"] = "http://www.sohu.com";

dt.rows.add(dr);

// 把表与下拉菜单绑定数据

dlstweb.datasource = dt;

dlstweb.datatextfield = "webname";

dlstweb.datavaluefield = "weburl";

dlstweb.databind();

// 开始时就把下拉菜单的autopostback设为false,

// 防止一开始就乱跳出网页来

dlstweb.autopostback = true;

}

}

下面的事件与前面一模一样了

private void dlstweb_selectedindexchanged(object sender, system.eventargs e)

{

response.write("<script language=javascript>window.open(" +dlstweb.selectedvalue + ");</script>");

}

小结:今天的一些知识非常重要,为了理解,程序的难度并不高。但这是以后程序设计的基础,所以这些你一定要掌握。

vb.net增加字段代码稍有不同,如下:

// 在表中增加字段

dt.columns.add("webname", gettype(string))

dt.columns.add("weburl", gettype(string))

其它都差不多了。

每四天

学习目的:

学习ado.net用法,并如何用datarearder读取数据

今天练习数据库的最基本用法,如何打开数据库。首先在网站设置文件web.config文件的<configuration>下方加入以下节点:

<configuration>

<appsettings>

<add key="数据库1" value="ex01.mdb" />

</appsettings>

……

该节点设置了数据库的路径,这样就可以很方便的调用数据库文件了,调用方法为:

server.mappath(configurationsettings.appsettings["数据库1"])

这是asp.net程序的通用方法,以后介绍的sql server数据库也是在此设置的。

好开始做程序,首先在cs文件的头部加入:

using system.configuration;

using system.data.oledb;

using system.text;

以下在page的load事件中,读取access数据库,并用表格显示出来:

private void page_load(object sender, system.eventargs e)

{

stringbuilder sbtable = new stringbuilder(); // 用于输出表格的语句

string strconnection = "provider=microsoft.jet.oledb.4.0;data source="

+ server.mappath(configurationsettings.appsettings["数据库1"]);

// 连接数据库的语句

oledbconnection conn = new oledbconnection(strconnection);

// 建立dbcommand对象

oledbcommand cmd = conn.createcommand();

cmd.commandtext = "select * from book";

// 打开数据库

conn.open();

// 用datareader读取数据

oledbdatareader dr = cmd.executereader();

sbtable.append("<table cellspacing=0 cellpadding=0 border=1><tr>");

sbtable.append("<td>书名</td><td>作者</td><td>单价<td></tr>");

while (dr.read())

{

sbtable.append("<tr><td>");

sbtable.append(dr["booktitle"].tostring());

sbtable.append("</td><td>");

sbtable.append(dr["author"].tostring());

sbtable.append("</td><td>");

sbtable.append(dr["unitprice"].tostring());

sbtable.append("</td><tr>");

}

sbtable.append("</tr></table>");

// 记住dr用毕必须关闭,否则会阻塞服务器

dr.close();

// dbconnection是受托管的,可以不关闭

// 但为良好的编程习惯,应该关闭

conn.close();

response.write(sbtable.tostring());

}

显示结果

图片如下:

第五天

学习目的:

掌握ado.net打开sql server数据库的方法。

今天做个非常普通的例子,做一个用户登录框。主要是通过这个练习认识一下sql server数据库的连接方法。和昨天的例子方法基本相同,很容易掌握的。

先建立sql server数据库,库名为aspnetabc,并建立一member新表,建表sql如下:

create table [dbo].[member] (

[memberid] [int] identity (1, 1) not null ,

[membername] [nvarchar] (50) collate chinese_prc_ci_as not null ,

[password] [nvarchar] (50) collate chinese_prc_ci_as not null ,

[gender] [bit] not null ,

[birthday] [datetime] null ,

[email] [nvarchar] (50) collate chinese_prc_ci_as null

) on [primary]

alter table [dbo].[member] with nocheck add

constraint [pk_member] primary key clustered

(

[memberid]

) on [primary]

与上一例子差不多,在web.config文件中再增加一行:

<appsettings>

<add key="数据库1" value="ex01.mdb" />

<add key="sqldatabase1" value="data source=localhost;user id=sa;password=sa;initial catalog=aspnetabc;connect timeout=30" />

</appsettings>

在面中添加二个文本框,txtmembername、txtpassword,并设置txtpassword的textmode为password。设置按钮btnlogin。btnlogin的事件代码如下:

private void btnlogin_click(object sender, system.eventargs e)

{

// 先检验输入正确性

if (txtmembername.text == string.empty || txtmembername.text.trim() == "")

{

response.write("<script language=javascript>alert(帐号不能为空)</script>");

return;

}

if (txtpassword.text == string.empty || txtpassword.text.trim() == "")

{

response.write("<script language=javascript>alert(没有输入密码)</script>");

return;

}

string strconnection = configurationsettings.appsettings["sqldatabase1"];

string sqlmember = "select membername ,[password] from member "

+ " where membername = " + txtmembername.text.trim() + ""

+ " and [password] = " + txtpassword.text.trim() + "";

// 连接sqlserver数据库

sqlconnection conn = new sqlconnection(strconnection);

// 建立sqlcommand

sqlcommand cmd = conn.createcommand();

cmd.commandtext = sqlmember;

conn.open();

// 建立datareader

sqldatareader dr = cmd.executereader();

// 判断datareader是否为空记录

if (dr.hasrows)

{

response.write("<script language=javascript>alert(" + txtmembername.text + "欢迎你!)</script>");

}

else

{

response.write("<script language=javascript>alert(找不到该会员,或密码错误。)</script>");

}

// 千万不要忘记关闭datareader

dr.close();

conn.close();

}

好了,一个非常简单的登录框做好了。当然在实际程序中还应加入跳转等,这个就留给你做了。

第六天

学习目的

掌握如何用ado.net插入新的记录

我们学得好快,今天做一个简易的新闻发布网页,可以说是个演示型的,只是让大家能理插入数据的最主要步骤。掌握今天的内容,我们就有基础可以做一个稍有实用的新闻程序了。

为了不使注意力分散,程序没有加入输入的验证,很快我会接下去写一个验证输入的方法。

图片如下:

仍用昨天的方法新建一数据表,sql语句如下:

create table [dbo].[newsarticle] (

[newsarticleid] [int] identity (1, 1) not null ,

[title] [nvarchar] (50) collate chinese_prc_ci_as not null ,

[subtitle] [nvarchar] (50) collate chinese_prc_ci_as null ,

[content] [ntext] collate chinese_prc_ci_as not null ,

[writer] [nvarchar] (10) collate chinese_prc_ci_as null ,

[pubtime] [datetime] not null

) on [primary] textimage_on [primary]

alter table [dbo].[newsarticle] with nocheck add

constraint [df_newsarticle_pubtime] default (getdate()) for [pubtime],

constraint [pk_newsarticle] primary key clustered

(

[newsarticleid]

) on [primary]

go

按昨天的方法加入头部的语句,在提交按钮中建立以下事件:

private void btnpublish_serverclick(object sender, system.eventargs e)

{

string strconnection = configurationsettings.appsettings["sqldatabase1"];

// 连接sqlserver数据库

sqlconnection conn = new sqlconnection(strconnection);

// 建立sqlcommand

sqlcommand cmd = conn.createcommand();

cmd.commandtext = "insert into newsarticle (title, subtitle, writer, content) values ("

+ "" + txttitle.text + ","

+ "" + txtsubtitle.text + ","

+ "" + txtwriter.text + ","

+ "" + txtcontent.text + ")";

conn.open();

//response.write (cmd.commandtext);

// 插入记录

try

{

cmd.executenonquery();

}

catch (exception ex)

{

response.write("<script language=javascript>alert(输入错误,数据库不能更新。)</script>");

}

finally

{

conn.close();

}

}

注意command对象的executenonquery()方法使用,该方法可以用于插入、更新、删除等操作,是command对象的重要方法。今天介绍了command语句的最基本用法,下次还将介绍占位符的用法。好了,各位先消化一下,明后天将做实用的东东了。

第七天

学习目的

接触验证控件

昨天介绍了sql server插入数据,但是我们省略了验证输入这一步。以前的做法是用语句逐个判断输入的正确性,如是否为空,长度是否超过等。现在.net中有了验证控件,可以使我们在编程的语句中大在简化了。今天介绍验证控件中最基本的一个,requeiredfieldvalidator控件,是用来判别否输入控件是否为空值,如为空则引发错误。

requeiredfieldvalidator可以用来验证textbox、listbox、dropdownlist、radiobuttonlist及html控件中的inputtext、textarea、select、inputfile等。

属性介绍:

controltovalidate:指点验证某一控件的控件名,如为空,将引发异常;

errormessage:错误提示信息;

isvalid:用于判断是否通过验证;

display:有三个值,none表示错误时不显示信息,但在validationsunmmary控件中显示;static表示不论错误提示是否出现,都占页面空间;dymatic:只有错误提示才占用空间。

text:文本内容。和errormessage一起使用时,将显示text错误信息。该种情况可以通过validationsummay控件显示errormessage属性的提示。

使用方法:

设置:

txttitle:maxlength(50);

txtsubtitle: maxlength(50);

txtwriter: maxlength(10);

这样可以防止输入过长字符串

rfvtitle:controltovalidate(txttitle)、errormessage(“标题必须输入。”)

rfvcontent:controltovalidate(txttitle)、errormessage(“内容必须输入。”)

这样在没有验证通过时,会出现下图信息提示,并不执行插入语句。直到验证正确后,才执行数据更新。

图片如下:

第八天

学习目的

学会sql中的占位符用法

在鲸鱼这几天忙死了,好几天没写了,真对不起各位。这几天让xhtml闹得不开心,虽然以前也知道这个,但没太在意。可现在我是如梦初醒,我发觉xhtml是个信号,所以这几天不得不仔细研究一下这个。很笨,我还没发觉xhtml的奥妙。确实如此,没上过台面,真不知这桌菜怎样好吃。少说了,回到正题。

先把以前的command的commandtext重新写过:

cmd.commandtext = "insert into newsarticle (title, subtitle, writer, content)"

+ " values ( @title, @subtitle, @writer, @content )";

这样代码是否很清晰了,我们可以避免一大串的难以看懂的的语句了。

接下来,我们就给这些定位符赋予属性和值了:

cmd.parameters.add("@title", sqldbtype.nvarchar, 50);

cmd.parameters.add("@subtitle", sqldbtype.nvarchar, 50);

cmd.parameters.add("@writer", sqldbtype.nvarchar, 10);

cmd.parameters.add("@content", sqldbtype.ntext);

以上我们给每个占位符定义一个值类型,相信不难看懂吧。接者再给于值:

cmd.parameters["@title"].value = txttitle.text.trim();

if (txtsubtitle.text == string.empty || txtsubtitle.text.trim() == "")

{

cmd.parameters["@subtitle"].value = dbnull.value;

}

else

{

cmd.parameters["@subtitle"].value = txtsubtitle.text.trim();

}

if (txtwriter.text == string.empty || txtwriter.text.trim() == "")

{

cmd.parameters["@writer"].value = dbnull.value;

}

else

{

cmd.parameters["@writer"].value = txtwriter.text;

}

cmd.parameters["@content"].value = txtcontent.text;

其实,也可以这样写:

cmd.parameters.add("@title", sqldbtype.nvarchar, 50) .value = txttitle.text.trim();

这要看你喜欢了。

不错吧,程序是否很有条理。

程序代码:

private void btnpublish_serverclick(object sender, system.eventargs e)

{

string strconnection = configurationsettings.appsettings["sqldatabase1"];

// 连接sqlserver数据库

sqlconnection conn = new sqlconnection(strconnection);

// 建立sqlcommand

sqlcommand cmd = conn.createcommand();

cmd.commandtext = "insert into newsarticle (title, subtitle, writer, content)"

+ " values ( @title, @subtitle, @writer, @content )";

conn.open();

cmd.parameters.add("@title", sqldbtype.nvarchar, 50);

cmd.parameters.add("@subtitle", sqldbtype.nvarchar, 50);

cmd.parameters.add("@writer", sqldbtype.nvarchar, 10);

cmd.parameters.add("@content", sqldbtype.ntext);

cmd.parameters["@title"].value = txttitle.text.trim();

if (txtsubtitle.text == string.empty || txtsubtitle.text.trim() == "")

{

cmd.parameters["@subtitle"].value = dbnull.value;

}

else

{

cmd.parameters["@subtitle"].value = txtsubtitle.text.trim();

}

if (txtwriter.text == string.empty || txtwriter.text.trim() == "")

{

cmd.parameters["@writer"].value = dbnull.value;

}

else

{

cmd.parameters["@writer"].value = txtwriter.text;

}

cmd.parameters["@content"].value = txtcontent.text;

// 插入记录

try

{

cmd.executenonquery();

}

catch (exception ex)

{

response.write("<script language=javascript>alert(输入错误,数据库不能更新。)</script>");

}

finally

{

conn.close();

}

}

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » 从零开始学ASP.NET-.NET教程,Asp.Net开发
分享到: 更多 (0)

相关推荐

  • 暂无文章