Asp.Net MVC 2 - перебирайте значения в форме в связывателе модели - PullRequest
6 голосов
/ 29 марта 2010

У меня есть список элементов в моей форме, которые названы так ...

<input type="text" id="ListItem1" name="ListItem1">
<input type="text" id="ListItem2" name="ListItem2">
<input type="text" id="ListItem3" name="ListItem3">

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

public class MyModel
{
  public IEnumerable<MyModelItem> Items {get; set;}
}

public class MyModelItem
{
  public int Id { get; set; }
  public string Value { get; set; }
}

Таким образом, каждый ListItem должен быть преобразован в MyModelItem с идентификатором, равным числу в конце идентификатора ввода, и значением, установленным в значение в поле ввода.

В ASP.Net MVC 1.0 я мог бы перебрать коллекцию bindingContext.ValueProvider.Keys и проверить на key.StartsWith("ListItem"), чтобы найти все входные элементы в этом формате.

Новый интерфейс IValueProvider в ASP.Net MVC 2 не имеет коллекции ключей, и я не могу перебрать этот интерфейс. Как получить доступ к этим значениям, для которых я знаю только префикс во время разработки в ASP.Net MVC 2?

Ответы [ 2 ]

5 голосов
/ 29 марта 2010

Если вы хотите перебрать значения формы, используйте Request.Form.

0 голосов
/ 29 марта 2010

Не могли бы вы использовать коллекцию bindingContext.ModelState.Keys?

Обновление Извините, должно было быть немного яснее. Я имел в виду, что вы не могли бы использовать коллекцию ModelState.Keys, проверить наличие ключа key.StartsWith («ListItem») и, если это так, использовать этот ключ для получения значения от поставщика значений (используя метод GetValue).

...