Как: (jQuery) модальное диалоговое окно входа с ASP.NET MVC 2? - PullRequest
0 голосов
/ 23 ноября 2010

Каков наилучший способ переопределить встроенный механизм входа в ASP.NET MVC 2, чтобы всплыло модальное диалоговое окно, если пользователю необходимо войти (или тег [Authorize] украшает действие контроллера)?

Я долго искал, и на самом деле ничего не делает

Буду признателен за любую помощь или руководство

jQuery не является обязательным условием, но я с ним знаком

Ответы [ 2 ]

2 голосов
/ 23 ноября 2010

Это вполне возможно и не слишком сложно.

http://weblogs.asp.net/mikebosch/archive/2008/02/15/asp-net-mvc-submitting-ajax-form-with-jquery.aspx

Это из другого поста, который я больше не могу найти:

Да,возможно.Просто отправьте форму входа, используя метод, описанный здесь Майком Бошем, и верните структуру данных json с returnUrl, если таковой имеется.

Я создал легкий класс LoginResultDTO, который я возвращаю как json:

public class LoginResultDTO 
{ 
  public bool Success {get;set;} 
  public string Message {get;set;} 
  public string ReturnUrl {get;set;} 
} 

Вот блок скриптов из моего представления LogOn:

<script type="text/javascript"> 
        $(document).ready(function() { 
            var form = $($("form")[0]); 
            form.submit(function() { 
                var data = form.serialize(); 
                $.post(form.attr("action"), data, function(result, status) { 
                    if (result.Success && result.ReturnUrl) { 
                            location.href = result.ReturnUrl; 
                    } else { 
                        alert(result.Message); 
                    } 
                }, "json"); 
                return false; 
            }); 
        }); 
</script> 

Это будет ajax обертывание формы входа.Обратите внимание, что это простейшая реализация кода javascript, но это место для начала.

Затем я изменил свое действие LogOn в AccountController и в соответствующих местах поместил что-то вроде этого:

if(Request.IsAjaxRequest()) 
{ 
  return Json(new LoginResultDTO{Success=true,Message="Successfully logged in"}); 
}else 
{ 
  return View(); 
} 

Итак, это сверхлегкая, но довольно полная версия того, как можно выполнить аутентификацию jquery в asp.net mvc.

0 голосов
/ 23 ноября 2010

Вы можете предоставить в своем проекте веб-службу, которая будет проверять, вошел ли пользователь в систему. При $(document).ready() выполните $.ajax() вызов веб-службы. На основании результатов вы можете отобразить модальное всплывающее окно, используя функцию the $.dialog() в библиотеке пользовательского интерфейса для JQuery.

...