相对较新的MVC。
我使用EF作为我的SQL数据库的ORM,但我被告知不要使用EF而只是使用普通的数据层。
我在使用SelectList
加载模型时出错这是我的' DAL':
public SQLiteDataReader GetFilters()
{
var cmd = new SQLiteCommand();
cmd.Connection = GetConnection();
cmd.CommandType = System.Data.CommandType.Text;
cmd.CommandText = "SELECT * FROM Filter";
return cmd.ExecuteReader();
}
这是我的' biz':
public IEnumerable<Filters> LoadFilterTypes()
{
var ctx = new DAL();
List<Filters> filters = new List<Filters>();
using (var dt = ctx.GetFilters())
{
while (dt.Read())
{
filters.Add(new Filters { Key = Convert.ToInt16(dt["FilterKey"]), FilterType = dt["FilterType"].ToString() });
}
}
return filters;
}
这是我的&#39;过滤器&#39;:
的模型public class Filters
{
public string FilterType;
public int Key;
}
这是我的ViewModel:
public class CloudData
{
[Display(Name = "SelectedFilter")]
public int? SelectedFilter { get; set; }
public SelectList FilterList { get; set; }
}
这是我的控制器:
public IEnumerable<Filters> LoadFilterTypes()
{
var ctx = new DAL();
List<Filters> filters = new List<Filters>();
using (var dt = ctx.GetFilters())
{
while (dt.Read())
{
filters.Add(new Filters { Key = Convert.ToInt16(dt["FilterKey"]), FilterType = dt["FilterType"].ToString() });
}
}
return filters;
}
public ActionResult Feed(string id, string guid)
{
var model = new CloudData();
var filterList = LoadFilterTypes();
model.FilterList = new SelectList(filterList, "Key", "FilterType");
return View(model);
}
这是我的错误:
我在过滤列表上设置了一个断点,并且正在填充。
我做错了什么?
感谢
答案 0 :(得分:4)
我认为问题可能是您将Key
声明为字段,而不是属性。你能试试这个:
public class Filters
{
public string FilterType { get; set; }
public int Key { get; set; }
}