代码之家  ›  专栏  ›  技术社区  ›  sirrocco

将消息从应用程序层传递到视图

  •  0
  • sirrocco  · 技术社区  · 15 年前

    假设我有一个addProductToCartTask,它有一个execute()方法。

    现在,任务是从控制器调用的。在execute方法中,有 是一个检查,如果不符合-该操作不执行。

    假设返回的信息是:“您没有足够的奖金购买 这个产品”。

    我考虑过在域验证失败时启动一个事件,但这意味着在控制器中必须有需要签入操作的所有类型的类变量(以确定是需要设置错误消息,还是需要重定向)。等)

    相反,我可以在任务上使用一个方法:geterrorMessages()。如果空 如果不为空,则返回json对象并返回消息。或者该方法可以返回一个枚举,该枚举将告诉我是否需要重定向或设置消息或返回对象….

    我不知道该走哪条路。如有任何意见,将不胜感激。如何从域层弹出消息?

    编辑: 这主要是在ajax上下文中。尽管我不确定它是否重要,因为它是从某个地方被调用的动作。

    1 回复  |  直到 15 年前
        1
  •  0
  •   James S    15 年前

    我可能误解了您的请求,但在我看来,您需要一个中心消息功能,而不是特定于任务对象的功能。如果将其留在任务中,则任务必须保持在作用域中并“活动”,直到ajax请求。

    我也做了类似的事情,虽然是直接从控制器。

    我有一个名为Messages的静态类。它有addMessage()、getLastMessage()和getAllMessages()方法。第一次调用时,每一个都将检查用户的会话变量,如果找不到任何内容,则创建并保存一个queue<string>)对象。这些方法基本上只是队列的接口。队列很好,因为它处理自动删除“已查看”消息的推送/弹出。

    我的控制器:

    Messages.AddMessage("Product Saved");
    

    你可能会:

    Messages.AddMessage(task...GetErrorMessages());
    

    然后,在我的视图中,我有一个html助手,它检查有多少错误消息,如果有,则创建一个<ul>,每个消息都是<li>。

    您可以很容易地使用getMessages()控制器,该控制器将任何消息作为JSON对象返回。

    詹姆斯