我认为我可以轻松地做到这一点但是我遇到了错误,我试图在MVC 5中创建一个下拉列表,其中显示了我从SQL存储过程中收到的数据。我得到了正确数量的下拉项目(7)但是所有项目都是从SQL数据中重复的最后一个值。我验证我的SQL存储过程返回7个不同的行,具有我想要的不同值。
在我的模特中:
public class FindHost
{
public List<Details> Inform {get; set;}
public FindHost()
{
Inform = new List<Details>();
}
}
public class Details
{
public string HostNames {get; set;}
public string HostID {get; set;}
}
在控制器中:
public ActionResult create(int? id)
{
FindHost data = new FindHost();
Details hosts = new Details();
System.Data.SqlClient.SqlDataReader reader;
using(SqlConnection connection = new SqlConnection("..."))
{
using(SqlCommand cmd = new SqlCommand("Stored Procedure Name",connection))
{
cmd.CommandType = System.Data.CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@Column1", 343);
cmd.Parameters.AddWithValue("@Column2", 343);
reader = cmd.ExecuteReader();
while(reader.Read())
{
hosts.HostID = reader["hostID"].Tostring();
hosts.HostNames = reader["hostName"].Tostring();
data.Inform.Add(hosts);
}
reader.Close();
}
}
ViewBag.HostStuff = new SelectList(data.Inform,"HostID", "HostNames");
return View();
}
答案 0 :(得分:1)
正如@Kritner所说:
while(reader.Read())
{
Details hosts = new Details();
hosts.HostID = reader["hostID"].Tostring();
hosts.HostNames = reader["hostName"].Tostring();
data.Inform.Add(hosts);
}