c# - 过滤器可以从我的 BaseController 访问属性吗?

标签 c# asp.net-mvc action-filter

我有一个 basecontroller,其属性如下:

public class BaseController : Controller 
{
    public User CurrentUser {get;set;}

    protected override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        // if session cookie found, set User object here
    }
}

现在我想创建一个 Action 文件管理器,我可以在 Controller 或 Action 上设置我想做的事情,比如:

if (User.IsAdmin) 
{
} 
else 
{
    // redirect to login or some page 
}

所以这个过滤器 @AdminOnly 我可以放在 Controller 或操作上,这将确保只有设置了 IsAdmin 标志的用户才能查看操作。

过滤器是否可以看到当前正在执行的 Controller ?

最佳答案

你不能用吗

if (filterContext.Controller is BaseController)
{
    BaseController ctr = (BaseController)filterContext.Controller;
    if (ctr.User.IsAdmin)
    {....}
}

Link

关于c# - 过滤器可以从我的 BaseController 访问属性吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26023954/

相关文章:

c# - 使用 C# 将字符串表达式转换为整数值

c# - 不能调用非委托(delegate)类型

c# - 在 EF6 中将字符串列设置为可为空

c# - 如何仅显示已分配给 c#、mvc 中的 viewbag 的列表中的第一个对象

asp.net-mvc - 一种在 ASP.NET MVC 中排除操作过滤器的方法?

c# - 关于dataGridView的Row和Column Headers的问题

c# - 如何将 css 类添加到 MVCContrib 网格 <th>

asp.net-mvc - ASP.NET MVC 操作过滤器 : Setting the filterContext. 过滤器中的结果阻止其他过滤器被执行?

asp.net-mvc - 更改 OnActionExecuting 事件中的模型

C# 使文本框中的一组字符表现得像一个字符