Skip to main content
 首页 » 编程设计

c#之对用户隐藏部分 View ,但让它们对 AJAX 可用

2024年04月18日46pander-it

所以基本上我有一个单页应用程序,它带有与 ASP.NET MVC 一起工作的 Angular。我有一个只有部分 View 的 Controller ,我希望用户无法访问它们。

通常为此我会使用[ChildActionOnly],但我不是从 View 中调用我的 MVC 部分,而是从 AJAX 中调用(我在应用程序的不同部分使用 jQuery 和 Angular 执行此操作).

有没有办法阻止用户访问我的部分内容,但让 ajax 在他们单击链接时获取它们?

谢谢,

请您参考如下方法:

虽然使用 AuthorizationAttribute 来处理这个问题听起来很自然,但您确实可以这样做。

public class AjaxOnlyAuthorization : AuthorizeAttribute 
{ 
    public override void OnAuthorization(AuthorizationContext filterContext) 
    { 
        if (filterContext.HttpContext.Request.IsAjaxRequest()) 
        { 
            base.OnAuthorization(filterContext); 
        } 
        else 
        { 
            //..No Go 
        } 
    } 
} 

然后……

[AjaxOnlyAuthorization] 
public MyAjaxOnlyClass 
{ 
} 

使用 ActionFilterAttribute 可能更合适,因为响应格式与授权关系不大。

public class AjaxOnlyFilter : ActionFilterAttribute 
{ 
    public override void OnActionExecuting(ActionExecutingContext filterContext) 
    { 
        ...     
    } 
}