Индексировать или находить значения свойств анонимного типа - PullRequest
0 голосов
/ 18 декабря 2011

Я создал метод HtmlHelper с именем DisplayListBoxFor, который должен отображать текстовое представление выбранных элементов в MultiSelectList в виде неупорядоченного списка (UL / LI) в браузере.У меня есть конкретные причины для того, чтобы подпись между стандартным ListBoxFor и моим настраиваемым DisplayListBoxFor была точно такой же, что означает, что мой метод должен принимать лямбда-выражение.У меня есть следующий код в моем классе помощников, который смоделирован из метода Html.ListBoxFor:

public static MvcHtmlString DisplayListBoxFor<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TProperty>> expression, IEnumerable<SelectListItem> selectList)
{
  TagBuilder tag = new TagBuilder("ul");
  foreach (var value in ((MultiSelectList)selectList).SelectedValues)
  {
    TagBuilder itemTag = new TagBuilder("li");
    itemTag.SetInnerText(value.ToString());
    tag.InnerHtml += itemTag.ToString();
  }
  return new MvcHtmlString(tag.ToString());
}

Затем я могу вызвать свой пользовательский метод следующим образом:Я использовал следующее:

Model.MySelectedValues = List<Object> 
Model.MyAvailableValues = MultiSelectList

Это работает просто отлично, за исключением того, что в выводе указывается только значение идентификатора, а не имя выбранного значения, поскольку это все, что хранится в MultiSelectList.Свойство SelectedValues ​​при создании.Я пытаюсь найти способ в моем цикле foreach сопоставить выбранное значение с именем значения, но, поскольку все в методе является анонимным типом, я не могу привести его к каким-либо не конкретным значениям или даже использовать индексаторнайти свойства id и name.Как бы я мог получить эти значения от анонимных типов, передаваемых этому методу?

1 Ответ

0 голосов
/ 21 декабря 2011

Я нашел решение этой проблемы, но я написал в отдельном посте, где я «ошарашил» вопрос.См. Метод MVC для вывода неупорядоченного списка из метода ListBoxFor

...