因胸联盟 发表于 2015-1-16 22:47:23

ASP.NET编程:Login控件在UpdatePanel内当考证用户信...

据说很厉害,甚至可以把C#也干掉^_^,不过也很复杂,本来C++已经够复杂的。有人甚至还提出把这个东东引进标准,我觉得基本上不可能的。办理|控件|革新|页面跟着AJAX.NETBETA2在明天公布,让我们看到了AJAX与ASP.NET2.0严密分离的快速与高效,我们乃至能够无需写一句JS代码便可让ASP.NET的网页失掉以往要花上数小时编写的JS代码所完成的无革新效果。而将这统统分离到ASP.NET也是那末的简单,只需将控件复杂地移到UPDATEPANEL控件以内再设置几个参数便可完成。可是,在体验AJAX.NET带给开辟者便当的同时,也会发明AJAX.NET偶然也并非完美无缺。就像笔者克日碰到ASP.NET2.0的Login控件在UPDATEPANEL内当做功考证用户信息后会革新页面的BUG,很明显这是违反了AJAX无革新的准绳了,以后经由剖析Login控件内置的用户身份信息考证的办法发明以下代码:
privatevoidAttemptLogin()
{
LoginCancelEventArgsargs1=newLoginCancelEventArgs();
this.OnLoggingIn(args1);
if(!args1.Cancel)
{
AuthenticateEventArgsargs2=newAuthenticateEventArgs();
this.OnAuthenticate(args2);
if(args2.Authenticated)
{
//用户信息考证乐成后,为客户端写上COOKIE信息.
FormsAuthentication.SetAuthCookie(this.UserNameInternal,this.RememberMeSet);
this.OnLoggedIn(EventArgs.Empty);
//就是上面这句Response语句作祟,在UPDATEPANEL控件内实行转向操纵招致页面革新!
this.Page.Response.Redirect(this.GetRedirectUrl(),false);
}
}
}

经由过程剖析AttemptLogin办法不丢脸出,当我们按下Login控件的登录Button并乐成考证用户信息以后会实行一句Response.Redirect页面转向语句(即便没有指定转向页也会实行这句代码,默许为以后页),而恰是由于实行了页面的转向而招致了页面的革新。当晓得堕落的缘故原由以后就好办了,大概这时候会有人说自界说控件承继Login控件偏重写AttemptLogin办法就能够了,但除自界说控件以外另有没有更复杂的办法呢?谜底是一定的,既然是内置的考证机打造成页面的革新,那末就干脆不利用Login控件的考证处置,而利用自界说一个办法去向理考证用户身份。起首为了利用自界说的考证办法,我们先找到Login控件,并将其转换成模板,然后在模板内找到LoginButton这个控件,将CommandName="Login"往失落,如许控件就不再利用内置的办法往考证用户信息了,随着我们为LoginButton加上一个OnClick事务,代码以下:
protectedvoidLoginButton_Click(objectsender,EventArgse)
{
//考证用户名及暗码是不是准确
if(Membership.ValidateUser(Login1.UserName,Login1.Password))
{
//依据下面剖析Login的考证机制,为客户端写上COOKIE.
FormsAuthentication.SetAuthCookie(Login1.UserName,Login1.RememberMeSet);
//考证乐成后可在此作一些处置,如把Login控件埋没起来
Login1.Visible=false;
}
else
{
//因为不利用内置的考证机制,那末考证失利的处置要本人设置一下.
(Login1.FindControl("FailureText")asLiteral).Text="用户名或暗码不准确,请重试!";
}
}
剖析下面代码,个中由于Login控件要考证的用户信息都贮存在SQL2005的Aspnetdb数据库的aspnet_membership表,如许我们只需利用Membership.ValidateUser这个办法就可以轻松完成考证用户信息,当考证乐成后,依照下面剖析的AttemptLogin办法为客户端写上COOKIE,再设置一下考证失利的堕落信息以后就轻松的把我们的Login控件改革为乐成考证用户信息以后不再革新了,如许改革后的优点是不必像编写自界说控件那样庞大,而且效果和本来的Login控件是千篇一律的,也还是能利用CreateUserWizard控件创立的用户名举行考证,而LoginStatus、LoginName等Login控件相干的控件也能如常利用。
PS:假如Login控件考证用户信息时呈现PageRequestManagerParserErrorException毛病,请反省web.config是不是有这句:
<httpModules>
.....
<addname="ScriptModule"type="Microsoft.Web.UI.ScriptModule,Microsoft.Web.Extensions,Version=1.0.61025.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35"/>
</httpModules>
感激saucer提示
你所列的那些其实差不多都可以称为应用服务器(servlet应该说是一种语言更合适)java是开放的,相同的工具就会有很多公司在做,加上java已经发展了很多年了,因此这些工具就很多了。他们很多都是类似的。

透明 发表于 2015-1-27 21:24:32

我的意思是.net好用,从功能上来说比JAVA强还是很明显的。

飘灵儿 发表于 2015-2-5 10:47:06

由于CGI程序每响应一个客户就会打开一个新的进程,所以,当有多个用户同时进行CGI请求的时候,服务器就会打开多个进程,这样就加重了服务器的负担,使服务器的执行效率变得越来越低下。

灵魂腐蚀 发表于 2015-2-11 09:26:22

JSP/Servlet虽然在国内目前的应用并不广泛,但是其前途不可限量。

仓酷云 发表于 2015-3-2 08:49:59

在asp.net虚拟主机的服务提供商中,目前首推的是CNNIC的其中一家域名注册机构---时代互联(www.now.net.cn),他们早在2001年微软刚推出Asp.net时就推出了对应的Asp.net虚拟主机了,经笔者的使用测试,他提供的Asp.net性能非常的稳定,版本也会定期的更新,目前他的

蒙在股里 发表于 2015-3-11 02:51:04

现在的ASP.net分为两个版本:1.1和2.0Asp.net1.1用VS2003(visualstudio2003)编程。Asp.net2.0用VS2005(visualstudio2005)编程。现在一般开发用的是VS2003。

活着的死人 发表于 2015-3-17 19:10:53

平台无关性是PHP的最大优点,但是在优点的背后,还是有一些小小的缺点的。如果在PHP中不使用ODBC,而用其自带的数据库函数(这样的效率要比使用ODBC高)来连接数据库的话,使用不同的数据库,PHP的函数名不能统一。这样,使得程序的移植变得有些麻烦。不过,作为目前应用最为广泛的一种后台语言,PHP的优点还是异常明显的。

只想知道 发表于 2015-3-24 21:37:02

ASP.net的服务器,要求安装一个.net环境,当然我这里指的是windows系统,顺便点一下,.net只能放在windows环境里来运行。Asp.net1.1的就装Framework1.1,Asp.net2.0的就装Framework2.0。
页: [1]
查看完整版本: ASP.NET编程:Login控件在UpdatePanel内当考证用户信...