Являются ли простые контроллеры без моделей допустимой архитектурой? - PullRequest
0 голосов
/ 07 мая 2009

Я нахожусь в процессе преобразования частей приложения для использования ASP.NET MVC из WebForms. Идея заключается в том, что, когда это возможно, я использую MVC для новых разработок. Моя проблема заключается в следующем:

Выполнение этого означает, что мои Модели не полностью реализованы в MVC. Допустим, у моего приложения WebForms есть надежная страница управления виджетами. Я добавляю новую функциональность, чтобы прикрепить цвет к виджету. Нажмите на виджет, и вы попадете на новую страницу, чтобы выбрать цвет, и все. Одно поле. Кажется глупым создавать модель WidgetColorPreference с двумя свойствами: WidgetID и Color, с единственной целью проверки и сохранения.

Итак, я пошел по пути реализации пространства имен Service с помощью таких методов, как «SetWidgetColor», принимая параметры WidgetID и Color. Мое действие контроллера просто вызывает эту службу в моей сборке Моделей.

Мой вопрос: действительно ли это временная архитектура?

Ответы [ 2 ]

4 голосов
/ 07 мая 2009

Конечно. MVC существует, чтобы поставить представление поверх модели. Если у вашего приложения все представление, а не модель, вам не нужно навязывать там модель. По мере того как ваше приложение становится все более сложным, и становится очевидной модель, вы можете перефакторинг.

Другими словами, вы не использовали бы M, V и C для Hello World. Это было бы строго "V". «C» добавляет больше специфических для вида смартов, а «M» добавляет бизнес-логику, постоянство и поиск.

0 голосов
/ 07 мая 2009

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

public ActionResult UpdateWidgetColor( [Bind(Include="Color,ID")]Widget widget )
{

}

или что-то подобное, используя TryUpdateModel

public ActionResult UpdateWidgetColor( int id, string color )
{

   var whitelist = new string[] { "Color" };

   Widget widget = db.Widgets.SingleOrDefault( w => w.ID == id );

   if (widget == null) ...handle missing widget error

   if (!TryUpdateModel( widget, whitelist ))
   {
      ...
   }
   else
   {

   }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...