Как организовать представления и контроллеры иерархически при наличии модели с большим количеством детей - PullRequest
2 голосов
/ 27 марта 2009

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

На моем бизнес-уровне это хорошо организовано иерархически.

Как мне организовать это мои контроллеры и просмотры? Должен ли я иметь PersonsController, FavoriteColorsController и т. Д.? все проживают в одном пространстве имен и папок? Или я должен иметь только PersonsController со многими действиями, такими как IndexFavouriteColors, UpdateFavoriteColor и т. Д. Оба варианта не совсем так. Первый не показывает, что FavoriteColors является дочерним лицом Person и может использоваться только в контексте человека. Второй создаст огромный PersonController.

То же самое с взглядами, конечно. Лучше всего было бы иметь

  • Views / Персоналии / index.aspx
  • Просмотров / Персоны / details.aspx
  • Просмотров / Персоны / и т. Д.
  • Просмотров / Персоны / FavoriteColors / index.aspx
  • Views / Персоналии / FavoriteColors / details.aspx

В этом примере я дал Человеку только несколько свойств «один ко многим», но на самом деле их много (10+), что увеличивает потребность в ясности.

Спасибо.

Ответы [ 2 ]

4 голосов
/ 27 марта 2009

На самом деле я нашел ответ в «Областях», которые предположительно поддерживаются Rails, но не MVC, хотя существуют частные реализации:

Группирование контроллеров с ASP.NET MVC
Создание MVC "Области" в качестве подпапок в представлениях

0 голосов
/ 27 марта 2009
PersonsController.cs

public ActionResult Index()
{
  return View();
}
public ActionResult Details()
{
  return View();
}
public ActionResult Info()
{
  return View();
}

....

Щелкните правой кнопкой мыши по каждому методу и создайте представления

В папке Views в результате вы должны иметь

Views
----- Persons
-------------Index
-------------Details
-------------Info
-------------....
...