Используйте класс для оформления ссылок на действия, требующие входа в систему, если у вас есть те, которые делают, а некоторые нет, когда запрос не авторизован. Когда кто-то нажимает на ссылку, требующую авторизации, появляется всплывающее диалоговое окно. В этом диалоговом окне должно быть опубликовано действие входа в систему с фактическим URL-адресом нажатой ссылки, установленным в качестве параметра returnUrl для действия. Если вход в систему не удается, перенаправьте в представление входа в систему (добавив returnUrl к действию post для формы входа в систему).
Примечание. Предполагается, что вы используете диалоговое окно jQuery UI, но не используете интерфейс кнопок диалога. Возможно, вам придется добавить классы пользовательского интерфейса к кнопке, чтобы получить правильный стиль. Если вы не используете jQuery UI, настройте код диалога для работы с вашими диалогами.
<% if (!Request.IsAuthenticated) { %>
$(function() {
$('#loginDialog').hide().dialog({
modal: true,
...
});
$('a.requires-login').click( function() {
returnUrl = $(this).attr('href');
$('#loginDialog').find('#returnUrl').val(returnUrl);
$('#loginDialog').dialog('open');
return false;
});
<% } %>
<% if (!Request.IsAuthenticated) { %>
<div id="loginDialog">
<% using (Html.BeginForm("Login","Account")) { %>
<%= Html.TextBox( "returnUrl", null, new { style = "display: none;" } ) %>
... rest of form ...
<% } %>
</div>
<% } %>