从零开始学ASP.docx
《从零开始学ASP.docx》由会员分享,可在线阅读,更多相关《从零开始学ASP.docx(11页珍藏版)》请在冰豆网上搜索。
从零开始学ASP
从零开始学(基础篇)
第一天
学习目的:
掌握最基本的Label、TextBox、Button控件用法
掌握用StringBuider类连接字符串
理解服务器的环境变量
StringBuilder类:
命名空间是:
。
StringBuilder类是个高效的类,连接字符串的方法是非常快的。
用于连接大量的字符串,其速度的优越性就会体现出来。
先举几个例子:
在cs或vb文件的头部加上
[C#]using;
[VB]Imports
[C#]StringBuildersbFirst=newStringBuilder();
(“这是第一个学ASPNET的例子”);
(“这个例子太简单”);
(“连三岁小陔都会做,我早知道了,嘿嘿。
”);
());
[VB]DimsbFirstAsStringBuilder=NewStringBuilder()
(“这是第一个学ASPNET的例子”)
(“这个例子太简单”)
(“连三岁小陔都会做,我早知道了,嘿嘿。
”)
下面就可以做正题了:
先建立一个C#的WEB应用程序工程,这废话我就少说了吧。
放一个Button控件:
ID为btnShowVariable
放一个Label控件:
ID为labServerVariable
添加Button的单击事件,如下代码
privatevoidbtnShowVariable_Click(objectsender,e)
{
="";
StringBuilderinfo=newStringBuilder();
foreach(objectobjVarin
{
("9pt'>");
());
("=");
[()]);
("
");
}
=();
}
结果显示:
图片如下:
这样我们就可以这样用
["REMOTE_ADDR"]);
et程序中最常用的类,特别是数据库开发中,没有该类的程序是不可想象的。
先做个小程序来练练手,很简单,就一个下拉菜单,取名dlstWeb。
在属性的Itmes选项中打开以下对话框,添加各项:
图片如下:
ASPX中的代码为:
DropDownListid="dlstWeb"style="Z-INDEX:
101;LEFT:
32px;
POSITION:
absolute;TOP:
32px"runat="server"
Width="88px"AutoPostBack="True">
ListItemvalue="">新浪
ListItem>
ListItemvalue="">搜狐
ListItem>
ListItemvalue="">网易
ListItem>
DropDownList>
在下拉框的SelectedIndexChanged事件中的加入代码:
privatevoiddlstWeb_SelectedIndexChanged(objectsender,e)
{
("('"++"');");
}
按F5运行,可是我们发现这下拉框选择时什么事也没发生。
原来原因是出在下拉框的AutoPostBack属性上,把它设为true后再试试,一切OK了。
下面我们增加些难度,下拉框中的内容很多情况下不是事先固定的,而是要动态添加。
这里设计是用一数据表DataTable与之联系起来。
另建一文件,按上添加一下拉框,取名dlstWeb,先设AutoPostPack为false,否则在刚启动而面就触发SelectedIndexChanged事件,弹出窗口就乱飞了。
在onLoad事件中添加代码,注意DataTable用法及IsPoskBack
DataTable属于命名空间,所以如果页面没预添加,可以自行增加这一行。
privatevoidPage_Load(objectsender,e)
{
oString());
("
"); (dr["Author"].ToString()); (" | "); (dr["UnitPrice"].ToString()); (" | "); }
("
");
Member](
[MemberID][int]IDENTITY(1,1)NOTNULL,
[MemberName][nvarchar](50)COLLATEChinese_PRC_CI_ASNOTNULL,
[Password][nvarchar](50)COLLATEChinese_PRC_CI_ASNOTNULL,
[Gender][bit]NOTNULL,
[Birthday][datetime]NULL,
[Email][nvarchar](50)COLLATEChinese_PRC_CI_ASNULL
)ON[PRIMARY]
ALTERTABLE[dbo].[Member]WITHNOCHECKADD
CONSTRAINT[PK_Member]PRIMARYKEYCLUSTERED
(
[MemberID]
)ON[PRIMARY]
与上一例子差不多,在文件中再增加一行:
在面中添加二个文本框,txtMemberName、txtPassword,并设置txtPassword的TextMode为Password。
设置按钮btnLogin。
btnLogin的事件代码如下:
privatevoidbtnLogin_Click(objectsender,e)
{
NewsArticle](
[NewsArticleID][int]IDENTITY(1,1)NOTNULL,
[Title][nvarchar](50)COLLATEChinese_PRC_CI_ASNOTNULL,
[SubTitle][nvarchar](50)COLLATEChinese_PRC_CI_ASNULL,
[Content][ntext]COLLATEChinese_PRC_CI_ASNOTNULL,
[Writer][nvarchar](10)COLLATEChinese_PRC_CI_ASNULL,
[PubTime][datetime]NOTNULL
)ON[PRIMARY]TEXTIMAGE_ON[PRIMARY]
ALTERTABLE[dbo].[NewsArticle]WITHNOCHECKADD
CONSTRAINT[DF_NewsArticle_PubTime]DEFAULT(getdate())FOR[PubTime],
CONSTRAINT[PK_NewsArticle]PRIMARYKEYCLUSTERED
(
[NewsArticleID]
)ON[PRIMARY]
GO
按昨天的方法加入头部的语句,在提交按钮中建立以下事件:
privatevoidbtnPublish_ServerClick(objectsender,e)
{
stringstrConnection=["SqlDatabase1"];
ET中有了验证控件,可以使我们在编程的语句中大在简化了。
今天介绍验证控件中最基本的一个,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重新写过:
="INSERTINTONewsArticle(Title,SubTitle,Writer,Content)"
+"valueS(@Title,@SubTitle,@Writer,@Content)";
这样代码是否很清晰了,我们可以避免一大串的难以看懂的的语句了。
接下来,我们就给这些定位符赋予属性和值了:
"@Title",,50);
"@SubTitle",,50);
"@Writer",,10);
"@Content",;
以上我们给每个占位符定义一个值类型,相信不难看懂吧。
接者再给于值:
["@Title"].value=
if===="")
{
["@SubTitle"].value=;
}
else
{
["@SubTitle"].value=
}
if===="")
{
["@Writer"].value=;
}
else
{
["@Writer"].value=;
}
["@Content"].value=;
其实,也可以这样写:
"@Title",,50).value=
这要看你喜欢了。
不错吧,程序是否很有条理。
程序代码:
privatevoidbtnPublish_ServerClick(objectsender,e)
{
stringstrConnection=["SqlDatabase1"];
alue=
if===="")
{
["@SubTitle"].value=;
}
else
{
["@SubTitle"].value=
}
if===="")
{
["@Writer"].value=;
}
else
{
["@Writer"].value=;
}
["@Content"].value=;
//插入记录
try
{
();
}
catch(Exceptionex)
{
("alert('输入错误,数据库不能更新。
')");
}
finally
{
();
}
}