Правильный способ проектирования контроллеров в ASP.NET MVC3 - PullRequest
2 голосов
/ 25 июля 2011

У меня есть вопрос. Вчера я начал изучать ASP.NET MVC3 и создал блог, где я могу добавлять, редактировать, удалять сообщения и комментировать эти сообщения.

Но я чувствую, что хочу создать его по-другому, потому что я думаю, что сделал это неправильно.

У меня есть два контроллера. HomeController и BlogController, и я думаю, что это очень неправильно, так как я не / добавляю блог, я добавляю сообщение / комментарий. Также я хочу, чтобы мой сайт состоял не только из самого блога.

Что я хочу сделать в этом сценарии

/Controllers
   HomeController.cs
   /Blog
      PostController.cs /* IndexAction - Show list of entries; DetailsAction - Show only one entry with comments under */
      CommentController.cs /* ListAction - Lists comments (not sure how to list them in Blog controller with PartialView yet...); AddAction - Add comment within Details of Post (again not sure if I can do this) */
   /SomeOtherThing
      SomeOtherController.cs /* Some random data from database like greeting in index page or whatever else not related to blog in any way */
   /Admin
      BlogController.cs /* For edit/delete blog data like comments/posts */
      SomeOtherController.cs /* For editing the other thing, not sure what for now */
      AccountsController.cs /* For editing accounts and such... */

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

Кроме того, о тех комментариях, это хорошая идея сделать их в отдельном контроллере? Потому что я хочу добавить / показать в действиях Post. Например, localhost/blog/post/1 покажет сообщение + форму для добавления комментария + список комментариев. Но я пока не знаю, как это сделать ..:)

Ответы [ 2 ]

1 голос
/ 25 июля 2011

Если имеется небольшое количество контроллеров, оставьте все контроллеры в одной папке.При желании вы можете «смоделировать» иерархию, указав маршрут в файле global.asax.См. this .

Когда вы предвидите большое количество контроллеров на своем сайте, используйте «области».Области предоставляют способ разделить большое веб-приложение MVC на более мелкие функциональные группы.Область - это фактически структура MVC внутри приложения.Смотри также здесь .

0 голосов
/ 25 июля 2011

При работе с проектами, которые имеют легко управляемое количество контроллеров, я обычно оставляю их все в папке корневого контроллера. Команды, в которых я участвовал, обычно позволяют размеру и / или сложности проекта определять, нужно ли нам создавать «иерархию контроллеров». Тем не менее, если вам легче концептуализировать ваш проект с определенной вами иерархией, тогда сделайте это.

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

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