我想在下拉列表中显示所选值。价值来自数据库。例如,我们想要更新用户配置文件,然后用户先前提供的性别值应显示为选定值。我以前用来显示的代码是
<% string val = Convert.ToString(Model.gender);
ViewData["gen"] = val;
%>
<%= Html.DropDownList("genderList", ViewData["gen"] as SelectList) %>
但它没有显示数据库中的值。但是viewdata从数据库中获取值,但它没有显示在下拉列表中。 提前谢谢。
答案 0 :(得分:0)
此:
string val = Convert.ToString(Model.gender);
ViewData["gen"] = val;
不与此兼容:
ViewData["gen"] as SelectList
ViewData["gen"]
包含一个字符串值,而不是SelectList
,当您尝试强制转换它时,您将获得null,而下拉列表中不包含任何值。
您需要一个数组才能填充下拉列表。第一步是使用某个对象的强类型数组。假设您定义了以下类:
public class Gender
{
public int Id { get; set; }
public int Text { get; set; }
}
在您的控制器操作中:
public ActionResult Index()
{
var genderList = new[]
{
new Gender{ Id = 1, Text = "Male" },
new Gender{ Id = 2, Text = "Female" },
}; // This should come from the database
ViewData["genderList"] = new SelectList(genderList, "Id", "Text");
return View();
}
并在视图中:
<%= Html.DropDownList("gen", ViewData["genderList"] as SelectList) %>
答案 1 :(得分:0)
您可以查看this博文,其中展示了如何在ASP.NET MVC中使用DropDownList。