Поток ASP.NET MVC (как модели создаются, заполняются и передаются)? - PullRequest
3 голосов
/ 16 августа 2011

Я видел блок-схемы жизненного цикла, но они, кажется, никогда не отвечают на этот вопрос, ИЛИ Я просто не понимаю.

Итак, если пользователь заходит на страницу регистрации, это:

  1. Маршрутный двигатель выбирает контроллер.
  2. Контроллер проверяет, какое представление должно отображаться, проверяет, является ли оно строго типизированным и, если да, то создает правильную модель.
  3. Вызывает View, передавая пустую модель.

Меня также интересует, что происходит, когда форма заполнена и отправлена.

Я не ищу ничего сверхтехнического, просто что-то концептуальное ...

1 Ответ

4 голосов
/ 16 августа 2011

Независимо от действий пользователя (по ссылке, введенному URL, отправке формы) основной поток приложения MVC выглядит следующим образом:

  1. В соответствии с таблицей маршрутизации Имя и метод контроллера(aka Action), который будет обрабатывать запрос, определены.
  2. Если были какие-либо параметры запроса (например, значения в форме), они связаны с параметрами Action.
  3. Генерируется контекст запроса (содержит сведения о запросе, клиенте, сервере и т. д.)
  4. Объект типа Controller создан, Action (метод) этого объекта вызывается с заданными параметрами.
  5. После обработки Action возвращаетсоответствующий результат, скорее всего View (также может быть Json, обычный текст, что угодно).
  6. Представление отображается и отправляется обратно клиенту в качестве ответа.

Конечно,здесь осталось много деталей, но это общая концепция.

Обновление : несколько слов о моделях.Модели используются для передачи данных из контроллера в представление.Существует два основных подхода:

  1. Использование коллекции ViewData - в основном обычный словарь значений ключей.В Контроллере он заполняется данными:

    ViewData["SomeKey"] = "someValue"; //not only string, any object can be here
    return View();
    

    А в View значения извлекаются ключами:

    <%= ViewData["SomeKey"] %>
    
  2. Строго типизированные виды.Создается класс Model, который будет содержать необходимые данные.Представление определено для строгой типизации с этим классом, и когда Action возвращает объект View, он передает экземпляр этого класса в качестве параметра.Вот пример кода:

    Модель:

    public class SomeModel
    {
        public string SomeKey { get; set; }
    }
    

    Контроллер:

    SomeModel model = new SomeModel();
    model.SomeKey = "someValue";
    return View(model);
    

    Вид:

    <%@ Page ... Inherits="System.Web.Mvc.ViewPage<SomeModel>" %>
    ...
    <%= Model.SomeKey %>
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...