ASP.NET MVC登录模态对话框/收藏夹(ASP.NET MVC Login Modal Dia

2019-08-08 09:14发布

我希望创建一个登录灯箱/模态对话框到我的网站,该网站是建立与asp.net的MVC。 但是我能想到的唯一的办法就是链接到受限制的部分,当把逻辑入的onclick事件的超链接。 我宁愿它,所以我仍然可以使用Authrisation动作过滤器,当你点击一个链接到一个action方法上需要authrisation其过程使用到实际的链接之前会显示灯箱/模态对话框。 这样做的原因是我不想瓶坯不必remeber就摆在您的链接事件的宋衍涛任务。

实现这个,我能想到的唯一的办法就是从服务器大跳阿贾克斯推/彗星客户端显示在authrisation过滤箱控制器继续之前。 也有不执行的AJAX推动在asp.net的MVC /彗星那么多机制的文档。

有没有一种办法simplier?

Digg的登录窗口就是一个例子。

Answer 1:

使用类装饰链接,如果你有一些做的,一些不这样做,当请求没有被授权要求登录的操作。 当有人点击需要授权一个链接,然后弹出的模态对话框。 这个对话框应该发布该链接的实际URL单击了设置为操作的参数RETURNURL您的登录操作。 如果登录失败,重定向到登录视图(追加RETURNURL到后动作登录表单)。

注:这是假设您正在使用jQuery UI的对话,但不使用对话框的按钮界面。 您可能需要在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>
<% } %>


文章来源: ASP.NET MVC Login Modal Dialog/lightbox