2012-08-27 56 views
1

問題:用戶通過某個域中的某個實體進行操作。最後一個更改其狀態,以便用戶反覆接收e-mail notifications(使用smtp服務器),直到給定的時間。
所以我需要以某種方式觸發一個事件。ASP.NET MVC中的計時器事件

有什麼替代方法可以做到這一點?我知道ASP.NET MVC框架中沒有任何事件。

謝謝!

+0

*我知道ASP.NET MVC中沒有事件* - 說什麼? – balexandre

+0

我不明白你的評論? – lexeme

回答

1

你可以用我的反轉已經內置支持過程中的域中的事件控制容器:

訂閱

訂閱是容易的。簡單地讓任何類實現IHandlerOf:

[Component] 
public class ReplyEmailNotification : IHandlerOf<ReplyPosted> 
{ 
    ISmtpClient _client; 
    IUserQueries _userQueries; 

    public ReplyEmailNotification(ISmtpClient client, IUserQueries userQueries) 
    { 
     _client = client; 
     _userQueries = userQueries; 
    } 

    public void Invoke(ReplyPosted e) 
    { 
     var user = _userQueries.Get(e.PosterId); 
     _client.Send(new MailMessage(user.Email, "bla bla")); 
    } 
} 

調度

域事件中所使用的DomainEvent類調度。實際的域名事件可以是任何類別,沒有任何限制。不過,我建議你把它們當作DTO的。

public class UserCreated 
{ 
    public UserCreated(string id, string displayName) 
    { 
    } 
} 

public class UserService 
{ 
    public void Create(string displayName) 
    { 
     //create user 
     // [...] 

     // fire the event. 
     DomainEvent.Publish(new UserCreated(user.Id, user.DisplayName)); 
    } 
} 

的代碼是從我的文章:http://www.codeproject.com/Articles/440665/Having-fun-with-Griffin-Container

ASP.NET MVC3安裝:

  1. 使用軟件包管理器控制檯:install-package griffin.container.mvc3
  2. 按照以下說明:http://griffinframework.net/docs/container/mvc3/