当前位置: 首页 > 图文教程 > 网络编程 > ASP.NET > Asp.Net细节性问题精萃

ASP.NET
使用函数传递参数来执行相应的数据库操作
如何实现在窗体和窗体之间进行传递数据
ASP.NET中文显示之两种解决方法
ASP.NET、JSP及PHP之间的抉择
ASP.NET 2.0发送电子邮件中存在的问题
谈谈HtmlControl与WebControl的区别与用途
从ASP.NET 1.1升级到ASP.NET 2.0要考虑的Cookie问题
通过系统配置来提高ASP.NET应用程序的稳定性
妙用ASP2.0中的URL映射改变网址
AJAX实现web页面中级联菜单的设计
ASP.NET跨页面传值技巧总结
再议ASP.NET DataGrid控件中的“添加新行”功能
Geometry 对象浅析
重构CollapsibleSplitter
如何利用.NET Framework使用RSS feed
ASP.NET获取IP与MAC地址的方法
在ASP.NET 2.0中使用样式、主题和皮肤
ASP.NET中为GridView添加删除提示框
ASP.NET 2.0,无刷新页面新境界
看看一个.net版对话框控件

ASP.NET 中的 Asp.Net细节性问题精萃


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-08-14   浏览: 60 ::
收藏到网摘: n/a

1.<%=...%>与<%#...%>的区别:
答:<%=...%>是在程序执行时调用,<%#...%>是在DataBind()方法之后被调用

2.控件接收哪些类型数据?
答:接收Bind的控件,一般有DropDownList,DataList,DataGrid,ListBox这些集合性质的控件,而被捆绑的主要是ArrayList(数组),Hashtable(哈稀表),DataView(数据视图),DataReader这四个,以后我们就可以对号入座,不会出现DataTable被捆绑的错误了:)

3.DataBind,获得的数据,系统会将其默认为String,怎样转化为其它的类型?
DataBinder.Eval(Container.DataItem,"转换的类型","格式")
最后一个"格式"是可选的,一般不用去管他,Container.DataItem是捆绑的数据项,"转换类型"指的是Integer,String,Boolean这一类东西.

4.主要命名空间:
<%@ImportNamespace="System.Data"%>处理数据时用到
<%@ImportNamespace="System.Data.ADO"%>使用ADO.net;时用到
<%@ImportNamespace="System.Data.SQL"%>SQLServer数据库专用
<%@ImportNamespace="System.Data.XML"%>不用看处理XML用到
<%@ImportNamespace="System.IO"%>处理文件时用到
<%@ImportNamespace="System.Web.Util"%>发邮件时大家会用到
<%@ImportNamespace="System.Text"%>文本编码时用到

5.Connections(SQLConection或者ADOConnection)的常用属性和方法:
|ConnectionString取得或设置连结数据库的语句
|ConnectionTimeout取得或设置连结数据库的最长时间,也是就超时时间
|DataBase取得或设置在数据库服务器上要打开的数据库名
|DataSource取得或设置DSN,大家不会陌生吧:)
|Password取得或设置密码
|UserID取得或设置登陆名
|State取得目前联结的状态
|Open()打开联结
|Close()关闭联结
|Clone()克隆一个联结。(呵呵,绵羊可以Connection我也可以)
示例:
SQLConnectionmyConnection=newSQLConnection();
myConnection.DataSource="mySQLServer";
myConnection.Password="";
myConnection.UserID="sa";
myConnection.ConnectionTimeout=30;
myConnection.Open();
myConnection.Database="northwind";
myConnection.IsolationLevel=IsolationLevel.ReadCommitted
6.Command常用的方法和属性
|ActiveConnection取得或设置联结Connections
|CommandText执行的SQL语句或储存过程(StoredProcedure)名
|CommandTimeout执行的最长时间
|CommandTypeCommand操作的类型(StoredProcedure,Text,TableDirect)三种,默认Text
|Parameters操作储存过程时使用
|Execute()执行SQL语句或储存过程
|ExecuteNonQuery()同上,区别在于不返回记录集
|Clone()克隆Command
示例:
stringmySelectQuery="SELECT*FROMCategoriesORDERBYCategoryID";
stringmyConnectString="userid=sa;password=;database=northwind;server=mySQLServer";
SQLCommandmyCommand=newSQLCommand(mySelectQuery);
myCommand.ActiveConnection=newSQLConnection(myConnectString);
myCommand.CommandTimeout=15;
myCommand.CommandType=CommandType.Text;</FONT>


7.打开和关闭数据库两种方法:
1.MyConnection.Open();//打开联结
MyConnection.Close();
2.MyCommand.ActiveConnection.Open();
MyCommand.ActiveConnection.Close()

8.使用DataSet,在数据库中增加、修改、删除一个数据
a.添加数据
DataRowdr=MyDataSet.Tables["UserList"].NewRow();
dr["UserName"]="周讯";
dr["ReMark"]="100";
dr["Comment"]="漂亮MM";
MyDataSet.Tables.Rows.Add(dr);

b.修改数据
MyDataSet.Tables["UserList"].Rows[0]["UserName"]="飞刀大哥";

c.删除数据
MyDataSet.Tables["UserList"],Rows[0].Delete();

d.恢复数据
if(MyDataSet.HasErrors)
{
MyDataSet.RejectChanges();
}

e.探测DataSet是否有改动
if(MyDataSet.HasChanges)
{
//保存代码
}else{
//因为没有变化,所以不用保存,以节省时间
}

f.更新数据库
MyComm.Update(MyDataSet);//更新数据库中所有的表
MyComm.Update(MyDataSet,"UserList");//更新某个表
9.DataGrid实现分页功能
AllowPaging="True"//是指允许分页,这个是最主要的。有了它,我们才能分页。
PageSize="5"//是指定每页显示的记录数,如果不写,就会默认为10条。
PagerStyle-HorizontalAlign="Right"//是指定分面显示的定位,默认是Left

PagerStyle-NextPageText="下一页"//把<>改为上一页和下一页字符串
PagerStyle-PrevPageText="上一页"

PagerStyle-Mode="NumericPages"//把<>改为123数字显示
10.显示一共有多少页,并且报告当前为第几页
当前页是:<fontcolor=red><%=DataGrid1.CurrentPageIndex+1%></font><br>
总页数是:<fontcolor=red><%=DataGrid1.PageCount%></font><br>
11.个性化分页
程序员大本营之"亲密接触ASP.Net(14)"有完整代码

12.要将页面重置为有效的状态
IValidatorval;
foreach(valinValidators)
{
Val.IsValid=true;
}
13.重新执行整个验证序列
IValidatorval;
foreach(valinValidators)
{
Val.Validate();
}
14.禁用客户端验证
<%@PageLanguage="c#"clienttarget=downlevel%>
15.Repeater、DataList和DataGrid控件用途"
这些控件可以简化几种常见的Web应用程序方案,包括报表、购物车、产品列表、查询
结果和导航菜单。Repeater是唯一允许在其模板中存在HTML片段的控件.
16.Server.Execute("another.aspx")和Server.Transfer("another.aspx")区别:
Execute是从当前页面转移到指定页面,并将执行返回到当前页面
Transfer是将执行完全转移到指定页面
17.XML文件中可以自己存有架构,也可以存在于*.xsl文件中,但必须通过xmlns属性在xml文档的根节点中指定该信息,如下所示:
<rootelementxmlns="x-schema:scheduledSchema.xsl">
18.XML文件的读取
FileStreammyfs=newFilestream(Server.MapPath("xmldtagrid.xml"),FileMode.Open,FileAccess.Read);
StreamReadermyreader=newStreamReader(myfs);
DataSetmyds=newDataSet();
myds.ReadXml(myreader);
19.正则表达式控件RegularExpressionValidator
符号含义
^指定检查开始处
$指定检查结束处
[]检查输入的值是否与方括弧中的字符之一相匹配
\W允许输入任何值
\d{}"\d"指定输入的值是一个数字,{}表示已指定数据类型的出现次数
+表明一个或多个元素将被添加到正在检查的表达式
示例:电子邮件格式(具有@号,且以.com/.net/.org/.edu结尾)
validationexpression="^[\w-]+@[\w-]+\.(com|net|org|edu)$"
20.DataGrid控件中数据操作重要语句:
属性:DataKeyField="userid"//设userid为表的主键,无法将该字段的值更新到数据库,最好设表的主键为DataGrid的主键
SqlCommand.Parameters["@userid"].Value=dg.DataKeys[(int)e.Item.ItemIndex];//检索所要更新的行的主键(将当前选定的行的主键值赋给命令的一个参)数
SqlCommand.Parameters["@fname"].Value=((TextBox)e.Item.Cells[2].Controls[0]).Text;//为参数赋予已修改的行值
21.自定义控件:
a.用户控件(ASP创建页面一样)
(I).创建页面,拖入控件,设置属性/方法.<%@ControlLanguage="C#"Debug="True"%>中的@Control指令来定义此页将包含控件代码
(II)保存为*.ascx文件,如a.ascx.
(III).使用:头<%@RegisterTagprefix="MyFirstControl"TagName="MyLbl"Src="a.axcs"%>
//Tagprefix为控件的前缀,像ASP:TextBox中的ASP
//TagName用于指定自定义控件的名称
//Src指定控件文件源
身体:<MyFirstControl:MyLblrunat="Server"id="AllMine"MyText="成功了"/>
b.使用C#创建自定义控件
(I).创建纯代码文件,继承基类Control,并保存为*.cs,如a.cs.
(II).将代码编译生成程序集:csc/t:library/r:System.dll,System.Web.Dlla.cs
//library告诉C#编译器生成程序集
///r:System.dllSystem.Web.Dll告诉C#编译器引用指定的程序集
(III).将生成dll文件放在bin目录中
(IV).使用:<%@RegisterTagPrefix="Mine"Namespace="MyOwnControls"Assembly="a"%>
22.复合控件注意事项:
publicclassMyCompositin:Control,INamingContainer//INamingContainer:如果在页面上有多个此控件实例,则此结口可以给每{}//个实例有唯一标志

this.EnsureChildControls();//表示将复合控件的子控件都呈现到页面上,此方法检查服务器控件是否包含子控件

CreateChildControls
23.Button/LinkButton/ImageButton/HyperLink什么时候用?
1.Button和ImageButton用于将数据传递回服务器.
2.Hyperlink用于在页面之间导航
3.LinkButton用于将数据保存到服务器或访问服务器上的数据
24.跟踪调试
跟踪:
1.页级别跟踪:在页的开头包括如下的页指令<%@PageTrace="True"TraceMode="SortByCategory/SortByTime"%>
自定义消息:
Trace.Write("这里为要显示的字符串");
Trace.Warn("这里为要显示的字符串");//与Trace.Write相同,只是字体为红色
检查是否使用了跟踪
例句:if(Trace.IsEnabled){Trace.Warn("已启用跟踪")}
2.应用程序级别跟踪:在Web.config文件的<System.Web>节中<traceenabled="true"pageOutput="true"/>
25.设置缓存:
1.输出缓存:
I.页面设置:将<%@OutputCacheDuration="120"VaryByParam="none"%>加在需要缓存页的开头
注释:在请求该页的后两分钟之内,输出内容不变
II.编程方式设置:
主要使用类System.Web.HttpCachePolicy类下的方法
(1).Response.Cache.SetExpires(DateTime.Now.AddSeconds(120));//在此方法中必须指定到期时间,如本语//句为两分钟
(2).Response.Cache.SetExpires(DateTime.Now.AddSeconds(120));
Response.Cache.SetSlidingExpiration(true);//"可调到期",主要用于那些开始访问量大,但随后访问//量平衡的情况
功能:第一句设置缓存到期时间,第二行打开slidingexpiration(可调到期).
2.数据缓存:
(1).DataViewmySource;(2).给mySource赋值;
(3).Cache["myCache"]=mySource;(4).mySource=(DataView)Cache["myCache"]
26.部署:直接复制到产品服务器即可复制语句:XCOPY<source_path><destination_path>//XOPY只接受物理路径,不接受虚拟路径