Этот процесс называется связыванием моделей, на нем много ресурсов ... Я бы начал с Как реализовать пользовательский, потому что из этого вы поймете, как и почему этот процесс работает.
http://buildstarted.com/2010/09/12/custom-model-binders-in-mvc-3-with-imodelbinder/ http://bradwilson.typepad.com/blog/2010/10/service-location-pt9-model-binders.html
РЕДАКТИРОВАТЬ:
Существует привязка модели по умолчанию, которая принимает элементы в коллекции записей, такие как данные формы и параметры URL, и пытается сопоставить их с элементамичто вы сказали диспетчеру ожидать.Это работает примерно так ...
Приходит запрос, MVC решает, какой контроллер должен получить запрос, а затем MVC смотрит на метод HTTP, это был GET или POST?Если это был пост, то он ищет действие контроллера с атрибутом HttpPost MVC, а затем смотрит на параметры, которые вы определили ...
В вашем случае он говорит, что у меня есть LoginModel и returnUrl;MVC теперь доволен - он знает, куда идут дела, поэтому теперь он смотрит на то, что вы отправили ... Он просматривает ваши почтовые данные (поля формы и параметры строки запроса) Один за другим он просматривает их имена, а затем пытается найтисовпадение параметров вашего контроллера.
Он находит поле имени пользователя в данных формы, смотрит на ваши параметры и спрашивает, есть ли имя пользователя?Нет, может быть, Имя пользователя является свойством LoginModel ... оно затем просматривает LoginModel.Ага это говорит, нашел один.Затем MVC создает экземпляр LoginModel и присваивает свойству Username значение, которое вы указали.
Этот процесс продолжается для каждой вещи, найденной в вашей форме и строке запроса.Ниже приведено множество правил, но вы получите представление - это соответствие является частью красоты MVC «соглашение о конфигурации».
Весь этот процесс над связыванием модели, и поскольку MVC реализует это поведение по умолчанию, вы не видите его записанным в Global.asax или чем-либо еще, это просто часть MVC.