ASP.NET MVC登录模态对话框/收藏夹
-
12-09-2019 - |
题
我希望创建一个登录灯箱/模态对话框到我的网站,该网站是建立与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>
<% } %>
不隶属于 StackOverflow