Я думаю, что это ошибка в MVC:
// create a vpr with raw value and attempted value of empty string
ValueProviderResult r = new ValueProviderResult("", "", System.Globalization.CultureInfo.CurrentCulture);
// this next line returns {0}
r.ConvertTo(typeof(int[]));
Если мы посмотрим на ValueProviderResult.cs в функции UnwrapPossibleArrayType, то увидим:
// case 2: destination type is array but source is single element, so wrap element in array + convert
object element = ConvertSimpleType(culture, value, destinationElementType);
IList converted = Array.CreateInstance(destinationElementType, 1);
converted[0] = element;
return converted;
Это заставляет converted[0]
быть элементом, и ConvertSimpleType приводит "" к 0. Поэтому я закрываю этот вопрос, если у кого-то нет больше информации.
РЕДАКТИРОВАТЬ: Кроме того, это не в ревизии 17270, поэтому, если вы делаете список вещей, которые изменяются с MVC 1 на MVC 2, это один из них.