Как ASP.NET MVC3 собирает данные из GET / POST в модель? - PullRequest
2 голосов
/ 01 апреля 2011

Я узнал о пользовательских шаблонах редактора для ASP.NET MVC3, и теперь я вижу, как легко реализовать свои собственные шаблоны. Однако, чтобы редактор работал, он должен не только отображать эти данные в текстовом поле, но и каким-то образом передавать редактируемое пользователем содержимое на сервер для обработки. Так как же это связывание работает для сложных моделей? Как MVC решает, куда направляется каждое значение POST? Существуют ли магические соглашения об именах? А как насчет очень сложных моделей, таких как динамические списки или словари или DataTable s?

1 Ответ

3 голосов
/ 01 апреля 2011

Существует соглашение об именах.Например, если у вас есть следующая модель:

public class Foo
{
    public Bar Bar { get; set; }
}

public class Bar
{
    public string Baz { get; set; }
}

и следующее действие:

public ActionResult Index(Foo foo) { ... }

, вы можете отправить следующий запрос:

/home/index?Bar.Baz=somevalue

inЧтобы установить значение Baz.Конечно, это автоматически создаст экземпляр модели Foo и ее свойства Bar.И, очевидно, это соглашение распространяется и на списки и словари .

Независимо от того, отправляются ли значения в строке запроса (запрос GET), в виде значений формы (запрос POST) или в качестве значений маршрута, которые он не использует.не имеет значения для модели связующего по умолчанию.Он будет смотреть на все эти места.

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

Примечание: есть также случай загрузки файлов .

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