我正在使用控制器-服务-存储库层模式,我是我的应用程序。存储库包含基本CRUD操作和服务层所有业务逻辑,而控制器保持非常精简(他们只调用服务层功能)。
我想发送信息(成功、警告等)。但是我不确定如何从服务层级别进行操作?我使用TempData和一个基类查找了一些解决方案,但这些解决方案似乎只适用于控制器级别。
是否有从服务层将用户通知推送到视图的好解决方案?
发布于 2013-05-10 05:56:13
看起来,您的应用程序架构中的关注点很好地分离了。保持这种方式是非常明智的--不要让您的服务层了解任何有关UI的信息。
我要做的是为服务层创建一些类,作为执行结果返回。
public class ExecutionResult<T>
{
public T Result { get; set; }
public string Message { get; set; }
}这样,您就可以将Message传递给ViewBag.UserNotification并在您的视图中执行它:
编辑:示例用法:
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
};
}
}这只是个样本。在现实世界中,您将在double中采取不同的方法
发布于 2013-05-10 05:54:11
使用这种模式,您不希望直接从服务层与视图交互,因此可以考虑在每个方法调用时将一些自定义数据传输对象返回给控制器。这些DTO可能包含任何错误消息或通知。然后控制器可以将这些数据传递给视图。
发布于 2013-05-10 05:55:34
一种方法可能是您的服务方法返回布尔值,以指示成功或失败。然后控制器就会知道这一点,并可以采取相应的行动。
另一种方法可能是方法返回一个自定义的"Error“对象,该对象包含有关服务中发生的情况的信息。
https://stackoverflow.com/questions/16475974
复制相似问题