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