数据绑定:'模型'不包含名称为' Key'

时间:2015-04-16 09:36:14

标签: asp.net-mvc

相对较新的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);
    }

这是我的错误:

enter image description here

我在过滤列表上设置了一个断点,并且正在填充。

我做错了什么?

感谢

1 个答案:

答案 0 :(得分:4)

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

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