Asp.net mvc 数据绑定:';型号';不包含名为';键';

Asp.net mvc 数据绑定:';型号';不包含名为';键';,asp.net-mvc,Asp.net Mvc,对MVC来说比较新 我使用EF作为SQL数据库的ORM,但我被告知不要使用EF,而只使用普通的数据层 加载带有SelectList的模型时出错 这是我的“达尔”: public SQLiteDataReader GetFilters() { var cmd = new SQLiteCommand(); cmd.Connection = GetConnection(); cmd.CommandType = System.Data.CommandType.Text;

对MVC来说比较新

我使用EF作为SQL数据库的ORM,但我被告知不要使用EF,而只使用普通的数据层

加载带有SelectList的模型时出错

这是我的“达尔”:

public  SQLiteDataReader GetFilters()
{
    var cmd = new SQLiteCommand();
    cmd.Connection = GetConnection();
    cmd.CommandType = System.Data.CommandType.Text;
    cmd.CommandText = "SELECT * FROM Filter";
    return cmd.ExecuteReader();
}
这是我的“生意”:

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;
}
这是我的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);
    }
public IEnumerable LoadFilterTypes()
{
var ctx=新的DAL();
列表过滤器=新列表();
使用(var dt=ctx.GetFilters())
{
而(dt.Read())
{
添加(新过滤器{Key=Convert.ToInt16(dt[“FilterKey”]),FilterType=dt[“FilterType”].ToString());
}
}
回流过滤器;
}
公共ActionResult提要(字符串id、字符串guid)
{
var模型=新的CloudData();
var filterList=LoadFilterTypes();
model.FilterList=新的选择列表(FilterList,“Key”,“FilterType”);
返回视图(模型);
}
这是我的错误:

我在过滤器列表上设置了一个断点,现在正在填充它

请问我做错了什么


谢谢

我想问题可能是您将
声明为字段,而不是属性。你能试试这个吗

public class Filters
{
    public string FilterType { get; set; }
    public int Key { get; set; }
}

显示全部例外情况谁告诉不要使用EF?!ORM更容易测试…@gerdi嗨,你不会发现我对此有任何争论。只是我的IT老板坚持他的老方法{噩梦}@haim770我抓拍了一个屏幕,我希望这样可以吗?
public class Filters
{
    public string FilterType { get; set; }
    public int Key { get; set; }
}