ASP.NET MVC3 RC2 привязка ошибок от параметров запроса к параметрам метода - PullRequest
4 голосов
/ 01 марта 2012

Я сталкиваюсь с ошибкой при отправке значений в метод контроллера, один из параметров которого имеет значение NULL. Шаги для воспроизведения:

Я создал тестовый метод

[HttpPost]
public ActionResult PostTest(string from, int? number, bool? formsearch)
{
return new ContentResult { Content = string.Format("{0}/{1}/{2}", from, number, formsearch) };
}

используя jquery, я создаю запрос Post

$.post("http://localhost/mysite/test/posttest",{ from:"1//1/2009",number:"156",formsearch:true});

запрос (например, в fiddler) четко показывает отправляемые значения:

из: 1 // 1/2009 номер: 156 formsearch: true

но результат, возвращаемый этой функцией:

1 // 1/2009 // Правда

Если я поменяю int? число к целому числу, результат правильный:

1 // 1 / 2009/156 / Правда

В MVC3 RC1 это работало без проблем с nullable int

Обновление: у меня, похоже, нет проблемы с недавно созданным сайтом MVC3. Что я могу иметь в своем проекте, который влияет на привязку модели к обнуляемым целым числам? И почему будет разница между RC1 и RC2? У кого-нибудь есть предложения по устранению этой проблемы с привязкой модели?

1 Ответ

2 голосов
/ 01 марта 2012

Это известная ошибка в выпуске MVC 3 RC2. ScottGu сказал:

мы видели несколько сообщений об ошибке кэширования метаданных, которая проявляется как минимум в двух сценариях:

  • Обнуляемые параметры вУ методов действия есть проблемы: если у вас есть метод действия контроллера с параметром, допускающим значение NULL (например, int? - или сложный тип, который имеет свойство NULL), то параметр NULL может всегда иметь значение NULL - даже если запрос содержитдействительное значение для параметра.

Пост в блоге, на который я ссылался, включает обходной путь: добавьте строку в ваш Application_Start:

// Workaround to fix RC2 bug with Metadata caching
ModelMetadataProviders.Current = new DataAnnotationsModelMetadataProvider();

Но на самом деле вы должны обновить RTM.Я был бы очень удивлен, если бы действующая лицензия RC2 сохранилась после выпуска RTM.

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