Asp.net mvc 给用户的MVC4通知消息

Asp.net mvc 给用户的MVC4通知消息,asp.net-mvc,asp.net-mvc-4,Asp.net Mvc,Asp.net Mvc 4,我使用的是控制器-服务-存储库层模式,我是我的应用程序。存储库保存基本CRUD操作和服务层所有业务逻辑,而控制器保持非常精简(它们只调用服务层功能) 我想向用户发送消息(成功、警告等),但我不确定如何从服务层级别执行?我查找了一些使用TempData和基类的解决方案,但这些似乎只在控制器级别上起作用 是否有一个很好的解决方案来将用户通知推到服务层的视图?< P>这种模式不想直接从服务层与视图交互,因此您可以考虑在每个方法调用中将一些自定义数据传输对象返回给控制器。这些DTO可能包含任何错误消息或

我使用的是控制器-服务-存储库层模式,我是我的应用程序。存储库保存基本CRUD操作和服务层所有业务逻辑,而控制器保持非常精简(它们只调用服务层功能)

我想向用户发送消息(成功、警告等),但我不确定如何从服务层级别执行?我查找了一些使用TempData和基类的解决方案,但这些似乎只在控制器级别上起作用


是否有一个很好的解决方案来将用户通知推到服务层的视图?

< P>这种模式不想直接从服务层与视图交互,因此您可以考虑在每个方法调用中将一些自定义数据传输对象返回给控制器。这些DTO可能包含任何错误消息或通知。然后控制器可以将此数据传递到视图。

一种方法可能是让您的服务方法返回布尔值,以指示成功或失败。然后,控制器会知道这一点,并据此采取行动


另一种方法可能是让方法返回一个自定义的“错误”对象,该对象包含有关服务中发生的情况的信息。

看起来您的应用程序体系结构中的关注点分离得很好。保持这种方式是非常明智的——不要让您的服务层了解任何有关UI的信息

我要做的是为服务层创建一些类,作为执行结果返回

public class ExecutionResult<T>
{
    public T Result { get; set; }
    public string Message { get; set; }
}

这只是一个样本。在现实世界中,您可能会在

中采用不同的方法,谢谢您的回答,但我如何在
返回重定向操作(“索引”、“事件”)
调用后显示消息?重定向操作具有接受“routeValues”的重载。这些数据可以是您想要的任何数据,在本例中是您的自定义DTO。感谢您的想法,您能否举例说明我将如何在服务层级别的函数中使用此方法?有关如何使用此方法的示例,请参见实体框架如何在此处使用DbEntityValidationResult:
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
            };
    }
}