ASP.NET MVC модель привязки и параметры действия - PullRequest
2 голосов
/ 01 мая 2009

Допустим, у меня есть действие контроллера, определенное как:

public ActionResult(MyModel model, string someParameter) 
{
    // do stuff
}

У меня есть пользовательское связывание модели для типа MyModel, и в представлении есть поле формы с именем SomeParameter, которое не привязано к модели. Как ASP.NET MVC узнает, как передать значение Request.Form["SomeParameter"] в качестве значения аргумента "someParameter" в действие?

Ответы [ 5 ]

3 голосов
/ 01 мая 2009

ASP.NET использует отражение, чтобы определить правильный метод для вызова и создать параметры для передачи. Это делается на основе массива FormCollection. В основном он увидит модель. * Keysin там и FormCollection["someParameter"] сначала попытается Action(model,someParameter), затем Action(model), а затем Action(). Так как он находит Action с моделью и аргументами someParameter, он пытается преобразовать их в типы аргументов.

Однако по умолчанию это происходит вслепую, что создает некоторые угрозы безопасности, в этом блоге более подробно об этом говорится.

Если кто-то может опубликовать ссылку, которая более подробно описывает, как ModelBinding выполняется под капотом, это было бы здорово.

1 голос
/ 24 мая 2009

У Фила Хаака есть пост на Как метод становится действием , в котором объясняется, как происходит это разрешение.

1 голос
/ 01 мая 2009

Поскольку для некоторого параметра будет использоваться связыватель модели по умолчанию, если не указано иное. И механизм связывания по умолчанию делает именно то, что вы описываете.

0 голосов
/ 30 июня 2016

Один из самых простых способов - использовать элементы HTML на странице с тем же именем, что и входные параметры в методе действия. EX) В представлении у нас есть:

    <input name="refNo" type="text">

Тогда в методе Action:

    public ActionResult getOrders(string refNo)

Таким образом, он просто привязывает значение refNo к входному параметру действия getOrders.

0 голосов
/ 24 мая 2009

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

ASP.NET MVC Preview 5 и сценарии размещения форм

Как использовать связыватель моделей ASP.NET MVC

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