Модель ASP.NET MVC, связывающая коллекцию с префиксом - PullRequest
9 голосов
/ 23 февраля 2010

Я хочу связать коллекцию, используя префикс, например,

public ActionResult Whatever([Bind(Prefix = "Prefix")] CustomModel[] models)

Я создал элементы формы, используя

<%= Html.TextBox("Prefix.models[" + i + "].Property") %>

, который сгенерировал html-входы, подобные этому

<input id="Prefix_models[0]_Property" name="Prefix.models[0].Property" />

Моя проблема в том, что связыватель модели по умолчанию не связывается с префиксом. Я получаю нулевое значение для модели arg в методе действия.

Если я удаляю префиксы из html и удаляю атрибут Bind, все работает нормально. Я не могу себе представить, что механизм связывания моделей по умолчанию не будет обрабатывать префикс в коллекции, поэтому я должен что-то делать не так.

Пожалуйста, помогите. Ура!

Ответы [ 2 ]

11 голосов
/ 23 февраля 2010

Префикс внутри [Bind] не предшествует имени параметра, он полностью заменяет имя параметра. Так что, если ваш метод действия имеет эту подпись:

public ActionResult MyAction([Bind(Prefix = "foo")] string[] bar) { ... }

Связующее ожидает foo[0], foo[1] и т. Д.

1 голос
/ 23 февраля 2010

UpdateModel () и TryUpdateModel () принимают параметр для префикса. Вы пробовали это?

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