У меня есть список объектов в моей форме, которые называют как это...
<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?
Если вы хотите перебирать значения формы, используйте Request.Form.
Не могли бы вы использовать коллекцию bindingContext.ModelState.Keys?
Обновление Извините, должно было быть немного яснее. Я имел в виду, что нельзя использовать коллекцию ModelState.Keys, проверить key.StartsWith ("ListItem") и, если да, использовать этот ключ для получения значения от поставщика значения (используя метод GetValue).