После перехода на бета-версию у меня возникли проблемы с Html.RadioButtonList. Может кто-нибудь показать мне, что я делаю не так?
Код:
<% Html.RadioButtonList(
"voter" + voter.Id,
new SelectList(new[]{"yes","no","abstain"}, "yes")).Each(x => Response.Write(x)); %>
И исключение я получаю:
[ArgumentNullException: Value cannot be null.
Parameter name: value]
System.Web.Mvc.Html.InputExtensions.RadioButton(HtmlHelper htmlHelper, String name, Object value, Boolean isChecked, IDictionary`2 htmlAttributes) +214
Microsoft.Web.Mvc.<>c__DisplayClass1.<RadioButtonListInternal>b__0(ListItem item) in c:\dd\Cicero\src\Mvc\main\src\MvcFutures\Mvc\RadioExtensions.cs:86
System.Linq.WhereSelectListIterator`2.MoveNext() +107
System.Linq.Buffer`1..ctor(IEnumerable`1 source) +259
System.Linq.Enumerable.ToArray(IEnumerable`1 source) +81
Microsoft.Web.Mvc.RadioListExtensions.RadioButtonListInternal(HtmlHelper htmlHelper, String name, SelectList selectList, Boolean usedViewData, IDictionary`2 htmlAttributes) in c:\dd\Cicero\src\Mvc\main\src\MvcFutures\Mvc\RadioExtensions.cs:88
Microsoft.Web.Mvc.RadioListExtensions.RadioButtonList(HtmlHelper htmlHelper, String name, SelectList selectList) in c:\dd\Cicero\src\Mvc\main\src\MvcFutures\Mvc\RadioExtensions.cs:29
Заранее большое спасибо!
Роб





Похоже, вы обнаружили ошибку в платформе MVC. Другие перегрузки RadioButtonList, кажется, работают нормально, но эта конкретная перегрузка barfs.
Глядя на Reflector (и используя трассировку стека), мне кажется, что в этой строке все идет наперекосяк:
return selectList.GetListItems().Select<ListItem, string>(delegate (ListItem item) {
return htmlHelper.RadioButton(name, item.Value, item.Selected, htmlAttributes);
}).ToArray<string>();
В методе Microsoft.Web.Mvc.RadioListExtensions.RadioButtonListInternal. Я полагаю, этот код отлично работал в Preview 5?
Ага, я помню. Я действительно пробовал все, что мог, чтобы заставить этот метод работать, но, похоже, теперь имеет значение, что я передаю, если он имеет тип SelectList, он умирает. Мне было бы интересно услышать, сработает ли это для кого-нибудь.
Святая корова, Джейсон! Некоторое время мы вместе работали в BT. Подпись изменилась с бета-версией. Раньше я использовал Html.RadioButtonList ("voter" + voter.Id, new [] {"да", "нет", "воздержался"}, "да"), и он работал как чемпион