Почему MVC ViewEngine не выполняет итерацию по этому массиву MvcHtmlStrings? - PullRequest
0 голосов
/ 16 февраля 2019

У меня есть следующее в EditorTemplate`:

@{
    var items = new List<SelectListItem>
    {
        new SelectListItem
        { Text = "one", Value = "one" },
        new SelectListItem
        { Text = "two", Value = "two" },
        new SelectListItem
        { Text = "3", Value = "3" },
    };
}

@Html.DropDownList("somename", items)
@Html.RadioButtonList("somename", items)

@Html.DropDownList возвращает выпадающий список, как я и ожидал, но @Html.RadioButtonList просто возвращает следующий текст :

System.Web.Mvc.MvcHtmlString[]

Метод расширения @Html.RadioButtonList взят из пакета nuget Microsoft.AspNet.Mvc.Futures, а сигнатура метода

public static MvcHtmlString[] RadioButtonList(this HtmlHelper htmlHelper, 
  string name, IEnumerable<SelectListItem> selectList)

, тогда как сигнатура метода расширения DropDownList:

public static MvcHtmlString DropDownList(this HtmlHelper htmlHelper, 
  string name, IEnumerable<SelectListItem> selectList)

Мне кажется, что механизм просмотра берет MvcHtmlString, возвращенный из DropDownList, и вызывает ToString() для этого - что прекрасно работает - но когда он вызывает ToString() для MvcHtmlString массив , возвращаемый из RadioButtonList, он возвращает именно то, что я ожидал - вызов ToString() для массива просто возвращает имя типа в виде строки.

Это похоже на Futures люди ожидали, что механизм просмотра будет перебирать содержимое MvcHtmlString[], а не просто вызывать ToString().

Теперь мой вопрос: «Как я могу это исправить - могу ли я настроить механизм просмотра для перебораэтот массив, как (я предполагаю) они ожидали? "

...