我使用的是控制器 - 服務 - 庫層圖案我爲我的應用。存儲庫包含基本的CRUD操作和服務層所有業務邏輯,而控制器保持非常精簡(他們只調用服務層功能)。MVC 4通知消息給用戶
我想發送消息(成功,警告等)給用戶,但我不確定如何做到這一點從服務層級別?我查找了一些使用TempData和基類的解決方案,但這些解決方案似乎只能在控制器級別上運行。
是否有一個很好的解決方案來推動用戶通知從服務層的圖?
我使用的是控制器 - 服務 - 庫層圖案我爲我的應用。存儲庫包含基本的CRUD操作和服務層所有業務邏輯,而控制器保持非常精簡(他們只調用服務層功能)。MVC 4通知消息給用戶
我想發送消息(成功,警告等)給用戶,但我不確定如何做到這一點從服務層級別?我查找了一些使用TempData和基類的解決方案,但這些解決方案似乎只能在控制器級別上運行。
是否有一個很好的解決方案來推動用戶通知從服務層的圖?
看起來你在你的應用程序架構的關注良好的分離。以這種方式保持它是非常明智的 - 不要讓你的服務層知道關於UI的任何信息。
我會做我會創造一些類服務層返回的執行結果。
public class ExecutionResult<T>
{
public T Result { get; set; }
public string Message { get; set; }
}
這種方式,您可以通過Message
到ViewBag.UserNotification
和shouw它在你的觀點:
編輯:示例用法:
public class Math
{
public ExecutionResult<double> Divide(double number, double divideBy)
{
if (divideBy == 0)
{
return new ExecutionResult<double>
{
Result = double.NaN,
Message = "Division by zero is not possible"
};
}
return new ExecutionResult<double>
{
Result = number/divideBy
};
}
}
這僅僅是一個樣品。在現實世界裏,你會採取不同的方法,comparing values of type double
一種方式是爲您服務方法返回布爾值,以指示成功或失敗。控制器會知道這一點,並可以採取相應的行動。
另一種方式可能是方法返回一個包含關於在服務發生了什麼信息定製的「錯誤」的對象。
感謝您的想法,請給我一個例子,我將如何使用這種方法在服務層級的功能? – stare 2013-05-10 06:41:55
我很想看到這是如何實現.. – 2013-12-11 21:31:42
有關如何使用此方法的示例,請參見實體框架是如何使用DbEntityValidationResult這裏:http://msdn.microsoft.com/en-us/library/system.data。 entity.validation.dbentityvalidationresult(v = vs.113)的.aspx – DarrellNorton 2014-05-03 15:34:46