Model view controller 索引到或查找匿名类型的属性值

Model view controller 索引到或查找匿名类型的属性值,model-view-controller,html-helper,anonymous-types,Model View Controller,Html Helper,Anonymous Types,我创建了一个名为DisplayListBoxFor的HtmlHelper方法,该方法需要在浏览器中以无序列表(UL/LI)的形式显示MultiSelectList中所选项目的文本表示。我有特定的理由保持标准ListBoxFor和自定义DisplayListBoxFor之间的签名完全相同,这意味着我的方法需要接受lambda表达式。我的helpers类中有以下代码,这些代码是根据Html.ListBoxFor方法建模的: public static MvcHtmlString DisplayLis

我创建了一个名为DisplayListBoxFor的HtmlHelper方法,该方法需要在浏览器中以无序列表(UL/LI)的形式显示MultiSelectList中所选项目的文本表示。我有特定的理由保持标准ListBoxFor和自定义DisplayListBoxFor之间的签名完全相同,这意味着我的方法需要接受lambda表达式。我的helpers类中有以下代码,这些代码是根据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
Model.MySelectedValues=List
Model.MyAvailableValues=多选列表

这工作正常,但输出仅列出ID值,而不列出选定值的名称,因为这是创建时存储在MultiSelectList.SelectedValues属性中的全部内容。我试图在我的foreach循环中找到一种方法,将所选的值与值名匹配,但是由于该方法中的所有内容都是Anyonomous类型,因此我无法将其转换为任何非具体的值,甚至无法使用索引器来查找id和name属性。我怎样才能从传递给这个方法的匿名类型中获取这些值呢?

我想出了一个解决方案,但我在另一篇文章中“简化”了这个问题。看

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