Trong trường hợp này, bạn có thể sử dụng thuộc tính bộ lọc hành động tùy chỉnh mở cửa sổ bật lên nếu người dùng không được ủy quyền.
Trong bộ lọc hành động này, hãy kiểm tra xem người dùng đã đăng nhập chưa và thêm giá trị boolean vào bộ sưu tập ViewData.
Aplly thuộc tính trên hành động của bộ điều khiển.
Sau đó, trong trang chính, hãy thêm hiển thị có điều kiện của mã mở cửa sổ bật lên.
Mã cho thuộc tính:
[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;
}
}
Trong trang chủ hoặc quan điểm chung khác thêm vẽ có điều kiện:
<% if((bool)(ViewData["OpenAuthorizationPopup"] ?? true)) { %>
...Your code to open the popup here...
<% } %>
Nguồn
2010-02-01 09:10:54
Phiên bản nào của ASP.NET MVC bạn đang sử dụng? –