2009-07-09 35 views
0

假设我有一个带有方法Execute()的AddProductToCartTask。将消息从应用程序层传递到视图

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

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

我想过在域验证失败时启动一个事件 - 但这意味着在控制器中我必须有各种需要在动作中检查的类变量(以确定是否需要设置错误消息,或者我需要重定向..等)

而不是我可以在任务上有一个方法:GetErrorMessages()。如果空 返回JSON对象,如果不为空返回消息。或者,该方法可能会返回一个枚举,它会告诉我是否需要重定向或设置消息或返回对象....

我不确定采取哪条路。任何输入将不胜感激。你如何吸引你的域名层的消息?

编辑:这主要是在AJAX上下文中。即使我不确定它的重要性,因为它是从某处调用的操作。

+0

说明:您使用AJAX调用此方法? (JsonResult)这一点很重要,因为它会影响你可以采取的方向。 – GalacticCowboy 2009-07-09 12:13:49

回答

0

我可能会误解你的请求,但在我看来,你想要一个中心消息功能,而不是特定于任务对象的东西。如果你把它放在你的任务中,那么这个任务必须保持在范围内并且“活着”直到AJAX请求。

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

我有一个名为Messages的静态类。它有AddMessage(),GetLastMessage()和GetAllMessages()方法。每次调用时,都会检查用户的会话变量,如果没有发现任何内容,则创建并保存一个队列<字符串>()对象。这些方法基本上只是Queue的一个接口。队列很好,因为它处理push/pop会自动删除“查看”消息。

我的控制作用:

Messages.AddMessage("Product Saved"); 

你可能会做的事:

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

然后,从我的观点,我有一个HTML帮手检查多少错误消息有,如果任何,创建每个消息的<ul>作为<li>。

您可以轻松拥有一个GetMessages()控制器,它将任何消息作为JSON对象返回。

James

相关问题