Asp.net mvc ASP.NET MVC登录模式对话框/lightbox

Asp.net mvc ASP.NET MVC登录模式对话框/lightbox,asp.net-mvc,login,modal-dialog,lightbox,Asp.net Mvc,Login,Modal Dialog,Lightbox,我希望创建一个lightbox/modal对话框,以便登录到我的网站,该网站是用asp.NETMVC构建的。然而,我能想到的唯一方法是在链接到受限部分时,将逻辑放入超链接的onClick事件中。我更喜欢它,这样我仍然可以使用授权操作过滤器,当您单击指向需要授权的操作方法的链接时,它将在继续执行实际链接之前显示lightbox/modal对话框。这样做的原因是我不想重复必须记住为链接添加事件的任务 我能想到的实现这一点的唯一方法是,在控制器继续运行之前,从服务器到客户端执行ajax推送/comet

我希望创建一个lightbox/modal对话框,以便登录到我的网站,该网站是用asp.NETMVC构建的。然而,我能想到的唯一方法是在链接到受限部分时,将逻辑放入超链接的onClick事件中。我更喜欢它,这样我仍然可以使用授权操作过滤器,当您单击指向需要授权的操作方法的链接时,它将在继续执行实际链接之前显示lightbox/modal对话框。这样做的原因是我不想重复必须记住为链接添加事件的任务

我能想到的实现这一点的唯一方法是,在控制器继续运行之前,从服务器到客户端执行ajax推送/comet,以在验证过滤器中显示该框。在asp.NETMVC中执行ajax推送/comet的文档也不多

有没有更简单的方法


digg登录窗口就是一个例子。

当请求未经授权时,如果您有需要登录的操作和不需要登录的操作,则使用类来修饰这些操作的链接。当有人单击需要授权的链接时,会弹出模式对话框。此对话框应将单击链接的实际url设置为操作的returnUrl参数,并发布到登录操作。如果登录失败,则重定向到登录视图(将returnUrl附加到登录表单的post操作)

注意:这假设您使用的是jQueryUI对话框,但不使用对话框的按钮界面。您可能需要自己将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>
<% } %>

$(函数(){
$('#loginDialog').hide()对话框({
莫代尔:是的,
...
});
$('a.requires-login')。单击(函数(){
returnUrl=$(this.attr('href');
$('loginDialog').find('returnUrl').val(returnUrl);
$('loginDialog')。对话框('open');
返回false;
});
…剩下的部分。。。

90%的内容我已经实现了。问题是修饰链接,我可以手动完成,这会很繁琐,或者无法确定是否需要验证操作方法并对链接采取适当的操作。让自定义HTML帮助程序模拟ActionLink来检查pa指定的操作是否正确rameter具有Authorize属性,如果是,则自动使用适当的类对其进行修饰?