2010-02-01 4 views
6

jquery 모달 대화 상자를 사용하여 로그인과 같은 다양한 작업을 수행하는 사이트에서 작업하고 있습니다.ASP.NET MVC는 모달을 시작하기 위해 특성을 허가합니까?

그러나; 우리는 이것들을 사용하는데 약간의 문제가 있습니다. 우리는 많은 액션 메소드에서 [Authorize] 속성을 사용하고 있습니다. 그래서 사용자가 로그인하지 않았고 그들이 필요로하는 경로에 도달하면 일어납니다. 그것은 로그인 페이지를 보여줄 수있는 권한이 있습니다. 그러나 분명히 이것은 모달이라고 가정합니다.

아무리 짧은 이야기라도, 로그인 모달을 구성하는 실제보기 대신 모달을 트리거 할 수있는 사용자 지정 권한 부여 특성을 만드는 방법이 있습니까?

+0

사용하는 ASP.NET MVC의 어떤 버전 : 마스터 페이지 또는 다른 일반적인 관점에서

[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; } } 

조건부 렌더링을 추가? –

답변

5

사용자가 권한이없는 경우 팝업을 여는 사용자 지정 작업 필터 속성을 사용할 수 있습니다.
이 동작 필터는 사용자가 로그인되어 있는지 확인하고 부울 값을 ViewData 컬렉션에 추가합니다.
컨트롤러의 동작에 대한 속성을 지원하십시오.
그런 다음 마스터 페이지에서 팝업을 여는 코드의 조건부 렌더링을 추가하십시오.

다음은 속성에 대한 코드 :

<% if((bool)(ViewData["OpenAuthorizationPopup"] ?? true)) { %> 
...Your code to open the popup here... 
<% } %> 
+0

고마워 이것이 완벽하게 작동합니다. – dswatik