2010-05-12 72 views
1

我非常新的asp.net MVC架构。那么我试图加载页面右上角的登录链接。点击我想jQuery的阻止用户界面显示我的用户名和密码文本框和按钮登录,当用户登录时,我wan顶部div刷新没有整页回发,而不是说“登录|注册”它应该更改为“欢迎|登出ASP.net MVC,jQuery的块UI,Ajax

马斯特页

<div id="page"> 
    <div id="header"> 
     <% Html.RenderPartial("LogInOutAndRegistrationHeader"); %> 
    </div> 
    <div id="masterContainer" > 
     <div id="masterContainerHeader"> 

     </div> 
     <asp:ContentPlaceHolder ID="MainContent" runat="server" /> 
    </div> 
    <div id="footer"> 
     Copy rights 
    </div> 
    <div id="overlay"> 
     <!--jquery block overlay loaded here at run time--> 
    </div> 
</div> 
<div id="contentOverlay"> 
    <!--jquery block overlay loaded here at run time--> 
</div> 
<script language="javascript" type="text/javascript"> 

    function displayOverlay(overlayUserControls) { 
     $.blockUI({ 
     draggable: true, // draggable option is only supported when jquery UI script is included 
     message: $("#contentOverlay").load(overlayUserControls, null, null) 
     }); 
     return false; 
    } 

    document.onkeydown = function(e) { 
     if (e == null) { // ie 
     keycode = event.keyCode; 
     } else { // mozilla 
     keycode = e.which; 
     } 
     if (keycode == 27) { // escape, close box 
     unBlockOverlay(); 
     } 
    }; 

    function unBlockOverlay() { 
     $.unblockUI(); 
    } 
</script> 

LogInOutAndRegistrationHeader.ascx

<% using (Ajax.BeginForm(new AjaxOptions { UpdateTargetId = "LogInOutAndRegistration", OnComplete = "LoginComplete" })) 
    {%> 
    <div id="LogInOutAndRegistration"> 
    <ul> 
     <% 
    if (Session.HasValue(SessionKey.UserId)) 
    { 
     %> 
     <il>Welcome, <strong><%=Session.GetValue<string>(SessionKey.EmailId, string.Empty)%></strong> | </il> 
     <il><%=Ajax.ActionLink("Log out", "Logout", new AjaxOptions { UpdateTargetId = "LogInOutAndRegistration" })%></il> 
     <% 
    } 
    else 
    { 
     %> 
     <il><a id="aLogin" href="#" >Login</a> | </il> 
     <il><a id="aRegister" href="#" >Register</a></il> 
     <%} %> 
    </ul> 
    </div> 
<% } %> 

<script language="javascript" type="text/javascript"> 
    $(document).ready(function() { 
    $("#aLogin").click(function() { 
     displayOverlay("/Profile/LogIn"); 
    }); 

    $("#aLogout").click(function() { 
     displayOverlay("/Profile/LogOut"); 
    }); 

    $("#Register").click(function() { 
     displayOverlay("/Profile/Registration"); 
    }); 
    }); 

    function LoginComplete() { 
    $.unblockUI(); 
    } 
</script> 

任何形式的帮助,非常感谢....感谢

回答

0

你是说你遇到的问题是失败的Ajax调用?

您需要为您的global.asax中的ajax调用定义另一个路由。

例如:简单的使用jquery ajax就可以了。

URL = "XYZ/Method/" 
//where XYZController is the controller classname and "Method" is the method that performs/returns whatever you need. 


$('#someDiv').load(URL); 
..... 
//In your global.asax place this after your "Default" route. 
routes.MapRoute("jQuery" 
      , "XYZ/Method/{Id}" 
      , new { controller = "XYZ" 
        , action = "Method" 
        , id = UrlParameter.Optional 
      });