从数据库中选择数据并插入下拉列表 - MVC 4

时间:2013-08-14 14:23:28

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

我试图从我的数据库中选择数据以插入到我的下拉列表中。我的问题是下拉列表没有显示任何内容,我也没有收到任何错误。有人可以帮忙吗?

这是我的代码:

型号:

public int id { get; set; }
public string name{ get; set; }
public IEnumerable<SelectListItem> isto { get; set; }

 public ListagemEmpresas()
{
    isto = GetCompanies();
}

public SelectList GetCompanies()
{
    var list = new List<SelectListItem>();
    string connection = ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString;

    using (var con = new SqlConnection(connection))
    {
        con.Open();
        using (var command = new SqlCommand("SELECT * FROM Companieslist", con))
        {
            SqlDataReader reader = command.ExecuteReader();
            while (reader.Read())
            {
                string id = reader[0] as string;
                string name = reader[1] as string;
                list.Add(new SelectListItem() { Text = name, Value = id });
            }
        }
        con.Close();
    }
    return new SelectList(list, "Value", "Text");
}

public class DefaultConnection : DbContext
{
    public DbSet<CompanyList> abc{ get; set; }
}

控制器:

var dba = new DefaultConnection();
        var query = dba.abc.Select(c => new SelectListItem
        {
            Value = SqlFunctions.StringConvert((double)c.id),
            Text = c.name,

        });
        var model = new CompanyList
        {
            isto = query.AsEnumerable()
        };

        return View(model);

查看:

@model MyProject.Models.CompanyList

@Html.DropDownListFor(m => m.name, Model.isto, "--Select One--")

1 个答案:

答案 0 :(得分:2)

在您的控制器中定义IEnumerable<SelectListItem>,如下所示。您需要先将DbSet<CompanyList>转换为List,然后才能使用ToString()方法。

var query = dba.abc.ToList().Select(c => new SelectListItem
    {
        Value = c.id.ToString(),
        Text = c.name
    });

然后,在您的视图中,您将拥有(DropDownList返回所选项目的值,而不是其文本):

@model MyProject.Models.CompanyList

@Html.DropDownListFor(m => m.id, Model.isto, "--Select One--")