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

要实现此,我可以想到的唯一方法是从服务器瓶坯AJAX推/彗星至客户端,以显示在一authrisation滤波器的框控制器继续之前。还有不执行AJAX的那么多的机制的文档推压在asp.net MVC /彗星。

是否有simplier方式?

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

有帮助吗?

解决方案

使用一个类来装饰链接,如果你有一些做的,一些不要求登录的操作,当请求没有被授权。当有人点击需要授权一个链接,然后弹出的模态对话框。这个对话框应该发布该链接的实际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>
<% } %>
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top