关于Asp.net mvc 2 Ajax thiskbox应用

 

当用户设置密码问题和答案的时候,验证用户的密码,当密码不正确时我们返回错误结果提示用户,如果密码正确导航到密码设置问题和答案页。

  在这其中使用了4个页面,模板页(Site.Master),用户信息页(LogOnUserControl.ascx),设置密码问题和答案页(ChangePasswordQuestionAndAnswer.aspx),验证用户密码页(ValidationUserPassword.ascx)。

  好了我们先看SIte.Master,这个页面嵌套了LogOnUserControl.ascx,  

  <%  Html.RenderPartial( " LogOnUserControl " );  %>
 

 

  而LogOnUserControl.ascx有一个导航让用户设置密码问题和答案

 

<%= Html.ActionLink( " 设置密码问题和答案 " " ValidationUserPassword " " Account " new  { height  =   " 230 " , width  =   " 300 " ,modal = true  },  new  { @class  =   " thickbox " , title  =   " 验证用户密码 "  }) %>

 

  仔细看这个导航我在这里使用thiskbox激活验证用户密码页ValidationUserPassword.ascx。

  ValidationUserPassword.ascx代码

代码
<% @ Control Language = " C# "  Inherits = " System.Web.Mvc.ViewUserControl<BobDongCommunity.Modules.Account.ViewModels.ValidationUserPassword> "   %>

< div id = " passwordmain " >
    
<%   using  (Ajax.BeginForm( " ValidationUserPassword " " Account " , new  AjaxOptions { UpdateTargetId  =   " passwordmain " }))
       { 
%>
    
< fieldset >    

        
< legend > 用户密码 </ legend >
        
< div  class = " editor-label " >
            
<%=  Html.LabelFor(model  =>  model.Password) %>
        
</ div >
        
< div  class = " editor-field " >
            
<%=  Html.PasswordFor(model  =>  model.Password) %>
            
<%=  Html.ValidationMessageFor(model  =>  model.Password) %>
        
</ div >
        
< p >
            
< input id = " Submit "  type = " submit "  value = " 登录 "   />
        
</ p >
    
</ fieldset >
    
<%  }  %>
</ div >

 

    ValidationUserPassword.aspx 后台Action处理代码如下:

 

代码
 1   [Authorize]
 2          [AcceptVerbs(HttpVerbs.Post)]
 3           public  ActionResult ValidationUserPassword(ValidationUserPassword model)
 4          {
 5               if  (ModelState.IsValid)
 6              {
 7                   if  (MembershipService.ValidateUser(User.Identity.Name, model.Password))
 8                      {
                return JavaScript("document.location = '/Account/ChangePasswordQuestionAndAnswer'");
 9                          // return  RedirectToAction( " ChangePasswordQuestionAndAnswer " );
10                      }
11                       else
12                      {
13                          ModelState.AddModelError( " Password " " 密码错误请重试! " );                       
14                      }                
15              }
16               return  View();
17          }
18 

 

  运行结果截图说明:

首先激活验证密码thickbox层,填写密码

关于Asp.net mvc 2 Ajax thiskbox应用_第1张图片

密码错误,得到了我们想要的结果

关于Asp.net mvc 2 Ajax thiskbox应用_第2张图片

当密码正确时,我们得到了这样的结果

关于Asp.net mvc 2 Ajax thiskbox应用_第3张图片

就其原因当验证密码的时候使用的是AJAX,当密码正确的时候它把ChangePasswordQuestionAndAnswer.aspx更新到了ValidationUserPassword.ASPX.

现在问题来了,我不想让它更新而是直接跳转到ValidationUserPassword.ASPX就像这样

关于Asp.net mvc 2 Ajax thiskbox应用_第4张图片


 问题解决了,原来从后台返回  return JavaScript("document.location = '/Account/LogOn'");

这样就不会去更新原来的层了。

你可能感兴趣的:(asp.net)