我的自定义属性不起作用

时间:2015-02-09 17:33:40

标签: c# asp.net-mvc-5

我正在尝试创建一个属性,以便我可以装饰一个动作/控制器并运行一些代码。

这是我的属性的代码:

public class UpdateLastLogInAttribute   : System.Attribute
{
    Linq.UserMinData umd { get; set; }    
    public UpdateLastLogInAttribute()
    {
        this.umd =datafuncs.GetMinData();
        if (umd != null)
            datafuncs.SaveLastConnected(umd);
    }                 
}   

...这是我希望属性与

一起使用的控制器
[funcs.UpdateLastLogIn]
public class HomeController : Controller
{
}

然而,当我点击控制器时,我的代码永远不会执行。怎么了?

1 个答案:

答案 0 :(得分:2)

属性很愚蠢。没有任何魔法可以使属性中的代码运行。您可以反思代码并检测属性并运行代码。

幸运的是,MVC已针对特定属性类型执行此操作,因此......

您可以考虑延长ActionFilterAttribute并覆盖OnActionExecutingOnActionExecutedOnResultExecutingOnResultExecuted,具体取决于您要截取的请求的哪个阶段。

MVC查找此属性的子类,并在适当的时间执行上述四种方法。

相关问题