2015-02-09 2 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

+0

Вы показали нам какой-то код, но вы не сказали нам, чего вы пытаетесь достичь, или что на самом деле происходит. «Это не работает» не является полезным описанием проблемы. –

+0

Мой пользовательский атрибут dont execute – 2598

ответ

2

Атрибуты немые. Существует не волшебство, которое запускает код в атрибутах. Вам не нужно размышлять над своим кодом и обнаруживать атрибуты и запускать код.

К счастью, MVC уже делает это для конкретных типов атрибутов, так что ...

Вы могли бы рассмотреть вопрос о расширении ActionFilterAttribute и первостепенную OnActionExecuting, OnActionExecuted, OnResultExecuting или OnResultExecuted в зависимости от того, какая фаза запроса вы хотите перехватить.

MVC ищет подклассы этого атрибута и выполняет указанные выше четыре метода в соответствующее время.

+0

Я сделал OnResultExecuting, но я вижу, что атрибут запускается несколько раз из одного, почему? – 2598

+0

Это новый вопрос. Предоставить код. Обязательно объясните, что происходит. Посмотрите на изменения, которые я внес на ваш вопрос, чтобы сделать его полезным. – spender

Смежные вопросы