Обновление до ASP.NET MVC 2 - formCollection.ToValueProvider () - PullRequest
4 голосов
/ 20 августа 2010

Я получаю следующую ошибку:

Не удается неявно преобразовать тип IValueProvider в IDictionary

Когда я пытаюсь запустить приведенный ниже код:

IDictionary<string, ValueProviderResult> valueProvider = formValues.ToValueProvider();
foreach (string k in formValues.Keys)
{
    ModelState.SetModelValue(k, valueProvider[k]);
}

Может кто-нибудь помочь?

Ответы [ 2 ]

1 голос
/ 20 августа 2010

Поскольку я использую .NET 4.0, мне пришлось сделать это:

IValueProvider valueProvider = formValues.ToValueProvider();
foreach (string k in formValues.Keys)
{
    ModelState.SetModelValue(k, valueProvider.GetValue(k));
} 

Хочу сказать спасибо @abatishchev за указание на различия.

0 голосов
/ 20 августа 2010

Вы делаете второй, лишний поиск в словаре:

foreach (KeyValuePair<string, ValueProviderResult> pair in formValues)
{
    ModelState.SetModelValue(pair.Key, pair.Value);
}

Очень странно!

in 3.5 ToValueProvider() возвращает IDictionary<string, ValueProviderResult>

и

, но в 4.0 - возвращается IValueProvider

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