Помогите перенести asp.net mvc 1 в mvc 2 - PullRequest
2 голосов
/ 29 июля 2010

Я только что присоединился к команде, которая разрабатывает приложение asp.net mvc 1. У меня установлена ​​только Visual Studio 2010, которая поставляется с MVC 2.

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

Я получаю ошибку

"Невозможно применить индексирование с помощью [] к выражение типа «System.Web.Mvc.IValueProvider"

я получаю эту ошибку 5 раз в разных местах приложения.

Строка

ModelState.SetModelValue(inputTagName, new ValueProviderResult(ValueProvider[inputTagName].AttemptedValue, file.FileName, System.Globalization.CultureInfo.CurrentCulture));

Если честно, я понятия не имею, что он делает, но мои коллеги (использующие Mvc 1) не испытывают проблем при компиляции.

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

Ответы [ 2 ]

2 голосов
/ 29 июля 2010

Это одно из (немногих) критических изменений между MVC 1 и MVC 2. ValueProvider был полностью переделан для поддержки нескольких поставщиков значений и больше не имеет свойства индекса. Краткий ответ - изменить это, чтобы использовать GetValue( inputTagName ). Более длинный (и лучший) ответ состоит в том, чтобы изменить код, чтобы использовать модели для входных данных метода действия, а не извлекать данные из поставщика значений непосредственно в коде. Скорее, вы используете привязку модели для доступа к поставщику значений и установки свойств для вашей модели.

0 голосов
/ 29 июля 2010

Изменить ValueProvider[inputTagName].AttemptedValue на ValueProvider.GetValue(inputTagName).AttemptedValue.

Обратите внимание, что вся ваша команда должна разрабатываться на одной и той же версии ASP.Net MVC иначе; у вас будет много неприятностей.

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