如何在asp.net mvc的下拉列表中显示所选值?

时间:2010-05-18 13:24:43

标签: asp.net-mvc

我想在下拉列表中显示所选值。价值来自数据库。例如,我们想要更新用户配置文件,然后用户先前提供的性别值应显示为选定值。我以前用来显示的代码是

<% string val = Convert.ToString(Model.gender);
   ViewData["gen"] = val; 
%>
<%= Html.DropDownList("genderList", ViewData["gen"] as SelectList) %>

但它没有显示数据库中的值。但是viewdata从数据库中获取值,但它没有显示在下拉列表中。 提前谢谢。

2 个答案:

答案 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。