ASP.net MVC, пользовательский интерфейс блока jquery, Ajax - PullRequest
1 голос
/ 12 мая 2010

Я очень новичок в архитектуре asp.net MVC. Ну, я пытаюсь загрузить страницу со ссылкой для входа в правом верхнем углу. При нажатии я хочу, чтобы в jquery Block UI отображались мои имя пользователя и пароль, текстовое поле и кнопка для входа в систему, а когда пользователь входит в систему, я хочу обновить top div без полной обратной передачи страницы вместо того, чтобы сказать « login | Register », это изменить на " Добро пожаловать | Выйти "

Страница Maste

    <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>

Любая помощь очень ценится .... Спасибо

1 Ответ

0 голосов
/ 29 сентября 2010

Вы говорите, что проблема, с которой вы сталкиваетесь, это неудачные вызовы ajax?

Вам нужно определить другой маршрут для вызовов ajax в вашем global.asax.

Например: простое использование 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 
            });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...