Навигационные вкладки MVC - PullRequest
1 голос
/ 02 апреля 2009

ОК, теперь мне интересно, как работать с вкладками навигации в ASP.NET MVC. В качестве примера предположим, что у вас есть вкладки, как у вас здесь, в stackoverflow. Итак, вопросы, теги, пользователи и т. Д.

Теперь предположим, что у вас есть "вложенная вкладка" под этой основной. Так, например, после выбора главной вкладки «Вопросы» отображались вкладки «Просмотр» и «Добавить». Некоторые вопросы:

  • Было бы лучше иметь набор маршрутов, таких как http://site/questions/view и http://site/questions/add для этих двух экземпляров?

  • Если бы у вас был NavigationController, который содержал действия для каждой из основных вкладок, т. Е. Вопросы, теги и т. Д., А затем и значение id для вложенной вкладки, т.е. Это даст вам что-то вроде следующего:

публичные вопросы ActionResult (представление строки)

общедоступные теги ActionResult (представление строки)

Etc

  • Или у вас будет контроллер для каждой вкладки / элемента навигации, и если да, то как это будет реализовано?

  • Скажем, вам нужно показать вкладки, выбранные с помощью выделения. В представлении (я полагаю, у вас есть частичное представление для этого) для вкладок навигации, будет ли это напрямую ссылаться на URL-адрес, чтобы определить, какой из них должен быть выделен, или это лучше всего сделать каким-либо другим способом?

Заранее спасибо за любые указатели

Ответы [ 2 ]

2 голосов
/ 02 апреля 2009

Лучше всего придерживаться REST . Я бы придерживался наличия контроллера на каждой вкладке и каждой вложенной вкладке, соответствующей возможным действиям REST: индекс, новый. Редактирование и удаление зависят от конкретного элемента, поэтому вкладки не отображаются. Создать вызывается новым, а обновление - редактированием.

Исключением из этого в вашем примере будет вкладка "Задать вопрос". Он находится на том же уровне, что и вкладка «Вопросы» (указатель), но будет называться «Вопросы / Новый».

1 голос
/ 02 апреля 2009

Я думаю, что ваши контроллеры должны быть более тесно связаны с вашей моделью, чем с вашим пользовательским интерфейсом (см. Мой ответ на этот вопрос ). В общем, я думаю, вам следует подумать о контроллере, обрабатывающем входные данные для вашей модели, то есть сделать что-то с моей моделью, а затем вернуть представление (UI), соответствующее этому действию. Элементы вашего пользовательского интерфейса могут, но не обязательно, отражать иерархию модели. Например, Questions, Unanswered и Ask a Question в SO, похоже, относятся к модели вопроса, но все они являются элементами интерфейса верхнего уровня. Unanswered также, кажется, имеет свой собственный контроллер, но его легко можно было бы обозначить как ... / questions / unanspted, а не как ... / неотвеченный.

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