2015-02-09 29 views
-4

我试图创建一个属性,以便我可以修饰操作/控制器并运行一些代码。我的自定义属性不起作用

这是我的属性代码:

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 
{ 
} 

工作,但是控制器,当我打的控制器,我的代码从不执行。怎么了?

+0

“不工作”不是对问题的描述。 – spender 2015-02-09 17:35:06

+0

你向我们展示了一些代码,但是你没有告诉我们你想要实现什么,或者实际发生了什么。 “这不起作用”不是对问题的有用描述。 – 2015-02-09 17:35:25

+0

我的自定义属性不执行 – 2598 2015-02-09 17:36:04

回答

2

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

幸运的是,MVC已经这样做了具体的属性类型,所以......

你可能会考虑,这取决于你想拦截请求的阶段延长ActionFilterAttribute和压倒一切的OnActionExecutingOnActionExecutedOnResultExecutingOnResultExecuted

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

+0

我做了OnResultExecuting,但我看到该属性运行几次insted一个,为什么? – 2598 2015-02-09 17:54:11

+0

这是一个新问题。提供代码。确保你解释发生了什么问题。看看我对你的问题做出的改变,以使它有用。 – spender 2015-02-09 17:57:58

相关问题