jquery – ASP.NET MVC授权属性来启动模态?

前端之家收集整理的这篇文章主要介绍了jquery – ASP.NET MVC授权属性来启动模态?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在一个使用jquery模式对话框的网站上做各种事情,比如登录等.

然而;我们在使用这些问题时遇到了一个小问题..我们在许多操作方法上使用[Authorize]属性,所以如果用户没有登录并点击他们需要的路由,那么会发生什么被授权它显示登录页面,就像它假设,但显然这是一个模态.

无论如何长话短说,有没有办法创建一个自定义授权属性,可以触发模态而不是构成登录模式的实际视图?

解决方法

在这种情况下,您可以使用自定义操作过滤器属性,如果用户未获得授权,则会打开弹出窗口.
在此操作过滤器中,只检查用户是否已登录并向ViewData集合添加布尔值.
应用控制器动作的属性.
然后在母版页中添加打开弹出窗口的代码的条件渲染.

属性代码

[AttributeUsage(AttributeTargets.Method | AttributeTargets.Class,Inherited = true,AllowMultiple = true)]
public class PopupAuthorizeAttribute : AuthorizeAttribute
{
    private void CacheValidateHandler(HttpContext context,object data,ref HttpValidationStatus validationStatus)
    {
        validationStatus = this.OnCacheAuthorization(new HttpContextWrapper(context));
    }

    public override void OnAuthorization(AuthorizationContext filterContext)
    {
        bool isAuthorized = false;
        if (filterContext == null)
        {
            throw new ArgumentNullException("filterContext");
        }
        if (this.AuthorizeCore(filterContext.HttpContext))
        {
            HttpCachePolicyBase cache = filterContext.HttpContext.Response.Cache;
            cache.SetProxyMaxAge(new TimeSpan(0L));
            cache.AddValidationCallback(new HttpCacheValidateHandler(this.CacheValidateHandler),null);
            isAuthorized = true;
        }

        filterContext.Controller.ViewData["OpenAuthorizationPopup"] = !isAuthorized;
    }
}

在母版页或其他常见视图中添加条件渲染:

<% if((bool)(ViewData["OpenAuthorizationPopup"] ?? true)) { %>
 ...Your code to open the popup here...
<% } %>
原文链接:https://www.f2er.com/jquery/181063.html

猜你在找的jQuery相关文章