使用反射填充下拉列表

时间:2014-01-31 16:28:07

标签: c# asp.net-mvc-4

我正在使用MVC4,我想要做的是使用连接到我的搜索框的下拉列表来搜索所选属性。我怎么会卡在Text = prop.Name上。我怎样才能使用它来访问和访问所有属性。

我的控制器

public ActionResult SearchIndex(string searchString)
    {
        var selectListItems = new List<SelectListItem>();

        var first = db.BloodStored.First();
        foreach(var item in first.GetType().GetProperties())
        {
            selectListItems.Add(new SelectListItem(){ Text = item.Name, Value = selectListItems.Count.ToString()});
        }
        IEnumerable<SelectListItem> enumSelectList = selectListItems;
        ViewBag.SearchFields = enumSelectList;


        var bloodSearch = from m in db.BloodStored
                          select m;

        if (!String.IsNullOrEmpty(searchString))
        {
            bloodSearch = bloodSearch.Where(s => string.Compare(GetValue(s, propertyName), searchString) == 0);
        }
        return View(bloodSearch);
    }

选择列表现在正在工作我只需要查看我的搜索字符串以及如何传递两个参数。

1 个答案:

答案 0 :(得分:0)

我不太确定你在问什么。如果要创建一个对象列表,并将属性Text设置为对象的属性名称,则可以获取BloodStored可枚举中的第一个对象并创建匿名类型列表:

// Get one instance and then iterate all the properties
var selectListItems = new List<object>();
var first = db.BloodStore.First();
foreach(var item in first.GetType().GetProperties()){
    selectListItems.Add(new (){ Text = item.Name});
}

ViewBag.SearchFields = selectListItems;