Передача сообщений из прикладного уровня в представление - PullRequest
0 голосов
/ 09 июля 2009

Допустим, у меня есть AddProductToCartTask с методом Execute ().

Теперь задача вызывается из контроллера. В методе Execute есть это проверка, что если не выполнено - действие не выполняется.

Допустим, возвращаемое сообщение будет следующим: «У вас недостаточно бонусов, чтобы купить этот продукт ".

Я думал о запуске события, когда проверка домена не удалась - но это означало бы, что в контроллере мне нужно иметь все виды переменных класса, которые нужно проверить в действии (чтобы определить, нужно ли мне устанавливать сообщение об ошибке, или мне нужно перенаправить .. и т. д.)

Вместо этого у меня может быть метод для задачи: GetErrorMessages (). Если пусто вернуть объект JSON, если не пустой, вернуть сообщение. Или метод может вернуть перечисление, которое скажет, нужно ли мне перенаправить или установить сообщение или вернуть объект ....

Я не уверен, какую дорогу выбрать. Любой вклад будет оценен. Как вы получаете сообщения от вашего уровня домена?

Редактировать: это в основном в контексте AJAX. Хотя я не уверен, что это важно, потому что это действие, которое вызывается откуда-то.

1 Ответ

0 голосов
/ 09 июля 2009

Возможно, я неправильно понимаю ваш запрос, но мне кажется, что вам нужна центральная функциональность сообщений, а не что-то специфическое для объекта задачи. Если вы оставите это в своей задаче, то задача должна оставаться в области действия и «работать» до запроса AJAX.

Я делаю что-то подобное, хотя прямо из контроллера.

У меня есть статический класс, который называется Messages. Он имеет методы AddMessage (), GetLastMessage () и GetAllMessages (). Каждый из них при первом вызове проверяет переменную сеанса пользователя и, если ничего не найдено, создает и сохраняет объект Queue (). Методы в основном просто интерфейс к очереди. Очередь хороша тем, что она обрабатывает push / pop, который автоматически удаляет «просмотренные» сообщения.

Мой контроллер делает:

Messages.AddMessage("Product Saved");

Вы могли бы потенциально сделать:

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

Затем из моего просмотра у меня есть помощник html, который проверяет, сколько существует сообщений об ошибках, и, если таковые имеются, создает

  • .

    Вы могли бы также легко иметь контроллер GetMessages (), который возвращает любые сообщения в виде объекта JSON.

    Джеймс

...