У меня есть ViewModel, сильно привязанная к моему View в моем приложении ASP.NET MVC, а теперь насчет контроллера - PullRequest
0 голосов
/ 03 июля 2010

Итак, как говорится в заголовке, я создал модель представления в своем приложении asp.net mvc, чтобы он был строго типизирован для моего представления. Моя модель представления - это комбинация двух моих классов моделей. Теперь, когда пользователь нажимает кнопку сохранения в этом представлении, он переходит к контроллеру. Откуда он знает, на какой контроллер идти? Я построил свой контроллер 1 - 1, так сказать, с моими моделями и представлениями, чтобы контроллер A знал о модели A, а контроллер B знал о модели B. Но если у меня есть модель представления, которая является AB, как она узнает о subit, чтобы перейти к A или B. Нужен ли контроллер под названием AB Controller?

Ответы [ 3 ]

0 голосов
/ 03 июля 2010

Метод действия не получает модель.Он получает параметры.

В любом случае, я думаю, я знаю, откуда вы: один из параметров вашего действия имеет тип ViewModel, используемый в View.Это общий макет и имеет большой смысл.Во многих проектах он настолько широко используется, что через некоторое время вы начинаете думать, что действие фактически получает модель.

Просто помните, что параметры вашего действия могут быть заполнены ModelBinder.Вы можете передать обе Модели в качестве параметров, вы можете передать ViewModel, который объединяет Модели a и b, или вы можете передать ViewModel, которая имеет свойства a + b.Агрегация - самый распространенный подход.

0 голосов
/ 05 июля 2010

Обычно мы перегружаем наши методы действия в контроллере, поэтому, если у вас есть действие с именем edit, которое отображает представление с вашим объектом viewmodel, у вас будет перегруженный метод действия редактирования с HttpPost, указанным для этого метода.

Данные в этот метод будут переданы как значения для сбора значений формы, или вы можете привязать их к вашему объекту viewmodel, если хотите, и обработать их дальше.

0 голосов
/ 03 июля 2010

Контроллер и вызываемое действие не зависят от объекта viewmodel, который вы использовали для привязки страницы во время начального рендеринга представления.Вызванный контроллер (и действие) определяется URL отправленного запроса.(Один из заданных вами маршрутов будет сопоставлен на основе строки URL-адреса запроса, или будет возвращена ошибка 404. Не найден.)

Кнопка отправки в форме HTML (обычно POST) будет иметьатрибут действия, который определяет цель URL, тег привязки будет иметь href и т. д.

В вашей ситуации, когда у вас есть пользовательский объект модели представления, вы можете определить ожидаемое действие и попытаться проанализировать этот конкретный тип.объекта, указав его в качестве параметра для вашего действия:

public ActionResult SaveSystemSetting(SystemAdminVM item) {
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...