为ASP.NET 2.0配置数据源
在ASP.NET 2.0中提供了大量的Provider,以及Master Page、Theme/Skin等新技术,而这些技术都需要有一个数据库的支持。而ASP.NET 2.0默认的是采用SQL Express,在实际开发中我们用的最多的还是Sql Server,因为我们要进行一定的配置。
下面简要叙述在ASP.NET 2.0中使用SQL Server 2K/2K5做支持数据库的步骤:
在Visuaol Studio 2005的命令行环境中执行命令:aspnet_regsql。该工具可以为ASP.NET 2.0在指定的SQL Server上建立或指定一个支持数据库,默认名字为aspnetdb
接下来需要修改配置文件,可以在通过修改$:WINDOWS\Microsoft.NET\Framework\v2.0.50727\CONFIG\machine.config来实现,但修改machine.config文件并不是一个好的方法,好在ASP.NET 2.0提供了在Web.Config文件中修改的办法。
打开一个Web应用程序的Web.Config文件,添加如下配置节:
首先用remove去掉在machine.config中定义的LocalSqlSever连接配置,那个连接是指向本地安装的Sql Express的;然后再重新添加一个LocalSqlServer数据库连接指向想要设定的Sql Server服务器数据库。
然后在节点中去配置一个默认的使用LocalSqlServer数据连接的Provider,如下:
这样配置文件就OK了。可以通过在VS中点击Web Site菜单下的ASP.NET配置来进行测试是否已经成功。
VS 2005 现在对Web.config文件也支持智能感知(intellisense)了:
如果你的智能感知没出来,可能是因为名称空间的关系:
http://schemas.microsoft.com/.NetConfiguration/v2.0">
只要把上面这句改为:
智能感知就可以出来了。
ADO.NET 2.0 中的ConnectionStringBuilder
对于所有开发人员来说,写连接字符串永远不是一件困难的事,但却是一件很头痛的事情。
看ADO.NET 2.0如何解决的
SqlConnectionStringBuilder connbuilder = new SqlConnectionStringBuilder();
connbuilder.DataSource = "localhost";
connbuilder.UserID = "someuser";
connbuilder.Password = "somepassword";
SqlConnection c = new SqlConnection (connbuilder.ConnectionString);
c.Open();
它至少解决了下面几个问题
1、不用因为记不住种类繁多的连接字符串而烦恼了.。
2、绝对不会写错连接字符串
1.asp.net 2.0中的MaxPageStateFieldLength 属性
在asp.net 2.0中,可以强制对viewstate进行分段传输了,使用的是Page.MaxPageStateFieldLength 属性,可以设置viewstate中,每个页面状态字段的最大字节数。格式如下,要在WEB.CONFIG文件里设置的:
其中,将设置把viewstate为不超过5字节,如果实际的viewstate超过该值,将进行分段传输,但每个分段的大小依然不超过maxPageStateFieldLength中的设置值, 默认设置值为-1,表示不对其进行分段传输。
2.Click button only once in asp.net 2.0
1 protected void Page_Load(object sender, EventArgs e)
2 {
3 PostBackOptions options = new PostBackOptions(Button1,string.Empty);
4
5 StringBuilder sb = new StringBuilder();
6 if (Button1.CausesValidation && this.GetValidators(Button1.ValidationGroup).Count > 0)
7 {
8 options.ClientSubmit = true;
9 options.PerformValidation = true;
10 options.ValidationGroup = Button1.ValidationGroup;
11
12 sb.Append("if (typeof(Page_ClientValidate) == 'function')");
13 sb.Append("if(Page_ClientValidate(\"" + Button1.ValidationGroup + "\")==false) return false;");
14 }
15 if (!string.IsNullOrEmpty(Button1.PostBackUrl))
16 options.ActionUrl = HttpUtility.UrlPathEncode(Button1.ResolveClientUrl(Button1.PostBackUrl));
17
18 sb.Append("this.disabled = true;");
19 sb.Append(ClientScript.GetPostBackEventReference(options));
20 sb.Append(";");
21 Button1.Attributes.Add("onclick", sb.ToString());
22 }
3.asp.net 2.0中得到sqldatasource返回的行数
在asp.net 2.0中,gridview是和sqldatasource控件绑定的,那么如何得到sqldatasource返回的记录的行数呢?比如sqldatasource控件中用select * from ....,如何返回其记录行数?在.net 2.0中,可以通过sqldatasource的OnSelected事件实现,并且对select事件SqlDataSourceStatusEventArgs参数中的AffectedRows属性设置一下就可以了,具体核心代码如下:
protected void SqlDataSource1_Selected(object sender, SqlDataSourceStatusEventArgs e)
{
totalRows.Text = e.AffectedRows.ToString();
}
4.在asp.net 1.1中,当要在page_load页面中,设置某个控件为默认的焦点按钮(也就是默认焦点是在这个控件上的),可能要用到javascript的代码,而在ASP.NET 2.0中,不用这些麻烦了,在form代码中,使用
defaultbutton和 defaultfocus属性就可以了,比如