Как организовать представления и контроллеры иерархически, если у модели много детей

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

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

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

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

  • Просмотры / Люди / index.aspx
  • Просмотры / Люди / details.aspx
  • Просмотры / Люди / и т. Д.
  • Просмотры / Люди / FavoriteColors / index.aspx
  • Просмотры / Люди / FavoriteColors / details.aspx

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

Спасибо.


person Gideon    schedule 27.03.2009    source источник


Ответы (2)


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

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

person Gideon    schedule 27.03.2009
comment
Вторая ссылка как-то испортилась. Похоже, есть лишняя косая черта в конце. - person AaronSieb; 27.03.2009

PersonsController.cs

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

....

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

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

Views
----- Persons
-------------Index
-------------Details
-------------Info
-------------....
person omoto    schedule 27.03.2009
comment
Проблема не в человеке. Это разделение представлений, которые являются дочерними по отношению к текущему представлению. Я хочу создать структуру папок просмотра, которая представляет структуру маршрута, например: / Person / / Person / {id} / details / Person / {id} / FavoriteColors / / Person / {id} / FavoriteColors / {id} / details - person Gideon; 27.03.2009