实际上我需要在mvc下拉列表中显示我的类的属性。我正在使用反射来获取这些东西。但现在我的问题是将它们作为键值对在dropdownlist中显示它们。
我正在使用以下代码......
public static Dictionary<string,string> SetProperties()
{
Type T = Type.GetType("Entity.Data.Contact");
PropertyInfo[] resultcontactproperties = T.GetProperties();
ViewContactModel viewobj = new ViewContactModel();
viewobj.properties = resultcontactproperties;
Dictionary<string, string> dic = new Dictionary<string, string>();
return dic;
}
那么如何将它们转换为字典以在下面的下拉列表中获取它们??
@Html.DropDownListFor(m=>m.properties, new SelectList(Entity.Data.ContactManager.SetProperties(),"",""), "Select a Property")
Well this is my ViewContactModel
public class ViewContactModel
{
public List<Entity.Data.Contact> Contacts;
public int NoOfContacts { get; set; }
public Paging pagingmodel { get; set; }
public PropertyInfo[] properties { get; set; }
}
In the view I'm using this model
答案 0 :(得分:1)
如果必须使用Dictionary并假设每个下拉项的名称和值都是属性名称本身,则可以使用以下行中的内容:
public static Dictionary<string, string> GetProperties<T>(params string[] propNames)
{
PropertyInfo[] resultcontactproperties = null;
if(propNames.Length > 0)
{
resultcontactproperties = typeof(T).GetProperties().Where(p => propNames.Contains(p.Name)).ToArray();
}
else
{
resultcontactproperties = typeof(T).GetProperties();
}
var dict = resultcontactproperties.ToDictionary(propInfo => propInfo.Name, propInfo => propInfo.Name);
return dict;
}
@Html.DropDownListFor(m=>m.properties, new SelectList(
Entity.Data.ContactManager.GetProperties<Contact>(),"Key","Value"),
"Select a Property")