#asp.net-mvc #razor
#asp.net-mvc #razor
Вопрос:
Хорошо описанная модель представления / контроллера / модели довольно понятна, когда дело доходит до обновления / удаления / сохранения объекта (скажем, книги) и т.д. … Но как вы, ребята, организуете общий код, такой как заполнение выпадающих списков (из db)? Я использую Jquery ajax для вызова действия элемента управления, но в таких случаях, как получение массивов для выпадающих списков, я чувствую, что они не должны находиться в одном и том же BookController .
Могу ли я иметь контроллер без соответствующего представления только для этих целей?
Спасибо
Ответ №1:
Каждый из них ViewModel
является данными для View
визуализации. Похоже, вы это понимаете. Когда Ajax запрашивает данные, я думаю, что более разумно, чтобы контроллер для представления отвечал за создание другого ViewModel
и возвращал его в виде Json для отображаемого представления. Если нескольким представлениям необходимо получить список книг, следует вызвать /Books/AjaxList
(пример неправильного имени метода), как и любое представление в /Books
. Разделение ответственности за создание ViewModel
на основе Ajax или без Ajax для меня не имеет смысла.
Комментарии:
1. Я думаю, вы неправильно поняли мой вопрос. Прежде всего, я не использую ViewModels. Я просто использую View / Model / Controller. Во-вторых, мой вопрос был больше связан с другой информацией, которая поступает из базы данных и используется в форме, такой как список категорий, атрибуты пользователя и т.д. и т.п. … Которая не относится к модели Book (или ViewModel). Итак, был бы у вас отдельный контроллер для них (без представления)?
2. Когда представление / частичное представление использует пространство имен @Model.classOrInterface, вы определяете модель для представления (ViewModel). Я предпочитаю возвращать модель для использования с помощью запроса View или Ajax — это ViewModel (потому что потребитель — это своего рода представление). Извините, если моя номенклатура привела к путанице.
3. Почему не все необходимые данные для отображения представления передаются в модели или в одном Ajax-запросе (Model) в начале?
4. Потому что это приложение просто не так работает. Многие элементы на странице являются интерактивными и зависят от других элементов. Все, что я спрашиваю, это как вы организуете эти вспомогательные действия. Я склоняюсь к тому, чтобы поместить его в отдельный контроллер.
5. Эрик, я понимаю, что ты имел в виду. Я новичок в MVC — я буду использовать ViewModel и сразу загружу столько данных, сколько смогу. Отметит ваш ответ как ответ.