|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
据说很厉害,甚至可以把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已经发展了很多年了,因此这些工具就很多了。他们很多都是类似的。 |
|