Рабочие процессы в ASP.NET MVC - PullRequest
       9

Рабочие процессы в ASP.NET MVC

4 голосов
/ 18 декабря 2009

В качестве учебного упражнения я хочу перенести существующее флеш-приложение в ASP.NET MVC. Он имеет около 20 форм, и хотя он в основном линейный, существует некоторая степень альтернативных потоков, основанных на пользовательских решениях или возвращенных данных.

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

Обновление

Думаю, я не понимаю, как правильно построить это. Я видел, что каждый контроллер отвечает за отдельный раздел приложения, а главный контроллер отвечает за рабочий процесс.

Если это не тот подход, который я должен использовать, каков наилучший способ сделать это?

Обновление 2

Области в ASP.NET MVC 2 позаботятся об этом разделе приложения? Мне действительно не нравится идея иметь слишком много действий в одном контроллере ...

Ответы [ 3 ]

3 голосов
/ 21 декабря 2009

В целом:

Контроллеры, как правило, представляют собой набор действий, которые имеют дело с логически согласованным фрагментом приложения (следовательно, почему вы часто видите UserController / OrderController и т. Д. И т. Д.).

Приложения MVC должны быть построены с использованием PRG (post - redirect - get), что означает, что у вас будет 2 действия для каждой формы, одно, которое будет отображать форму, а второе, с тем же именем, но украшенное [AcceptPost], которое обработает форму и перенаправит пользователя в соответствующее место на основе результата.

Самый простой способ узнать, как это работает и перенести ваше приложение, - смоделировать каждую форму как простой dto без логики, создать представление для каждой формы и 2 действия.

Если у вас есть логика, работающая в контроллере, вы можете захотеть перенести ее в какой-либо вид сервиса, который можно внедрить в контроллер.

Специально для ваших рабочих процессов:

Каждый рабочий процесс, вероятно, должен иметь свой собственный контроллер. Может быть полезно смоделировать их с использованием некоторой формы шаблона состояний (в зависимости от сложности рабочего процесса) и предоставления результата каждого перехода состояния, который ваш контроллер может преобразовать в перенаправление на следующий шаг в рабочем процессе.

1 голос
/ 21 декабря 2009

Я боролся с той же проблемой (используя Windows Workflow Foundation с ASP.NET MVC), и я написал об этом в блоге здесь

Может быть, вы найдете это полезным, извините за нажатие моей собственной ссылки

1 голос
/ 18 декабря 2009

Когда форма публикует действие контроллера, действие контроллера определяет, что делать с опубликованными результатами и какое представление отображать следующим или перенаправлять:

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult HandleFormSubmission(FormCollection col)
{
    // do something with posted data
    // redirect to /someOtherController/someOtherAction
    // which could show some other form
    return RedirectToAction("someOtherAction", "someOtherController");
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...