MVC 1.0 DropDownList 静态数据选择不起作用

MVC 1.0 DropDownList static data select not working

提问人:dale 提问时间:10/27/2009 更新时间:2/12/2011 访问量:1317

问:

我是 MVC 和 C# 的新手。我正在尝试让静态列表与 DropDownList 控件一起使用,以便呈现的选定值由数据库中的当前模型值设置。

在控制器中,我有:

  ViewData["GenderList"] = new SelectList(new[] { "Female", "Male", "Unknown" }, donor.Gender);  

在视图中:

 Gender:<%=Html.DropDownList("Gender", (IEnumerable<SelectListItem>)ViewData["GenderList"]) %>

在调试器中,捐赠者。性别是“男性”,但“女性”在视图中被呈现。

我读过许多与选择相关的帖子,但我还没有找到一个适用于静态列表的帖子(例如,没有“值”和“名称”可以使用)。我可能在做一些愚蠢的事情......

模型-视图-控制器 列表 静态的 下拉菜单

评论


答:

0赞 Si Gardner 10/27/2009 #1

这听起来像是一个愚蠢的问题,但这是捐助者。性别字符串值,它是否与您使用的硬编码值 EG 'Male' 匹配大小写?

我问的原因是因为这个;

ViewData["GenderList"] = new SelectList(new[] { "Female", "Male", "Unknown" }, "Male");

工作是一种享受,但是这个;

 ViewData["GenderList"] = new SelectList(new[] { "Female", "Male", "Unknown" }, "male");

返回结果

评论

0赞 dale 10/27/2009
好主意。原来是捐赠者。性别是数据库中的一个字符。但是,尝试这样做: ViewData[“Gender”] = new SelectList(new[] { “Female”, “Male”, “Unknown” }, donor.Gender.ToString());仍然没有带来快乐。现在,这可能是因为 Model.Gender 仍然是一个字符——不知道该怎么做。
0赞 dale 10/27/2009 #2

感谢 Si,这是我想出的最终解决方案:

在控制器中,这:

  ViewData["GenderList"] = repo.GetGenders(donor.Gender);

在 DonorRepository 中,这:

public SelectList GetGenders(string selected) {
    SelectList genders = new SelectList(new[] { "Female ", "Male   ", "Unknown" }, (selected == null ? null : selected.ToString().PadRight(7).ToCharArray()));
    return (genders);
}

然后在视图中,只有这样:

<%= Html.DropDownList("Gender", (IEnumerable<SelectListItem>)ViewData["GenderList"], "--Select--")%>

注意: PadRight(7) 等于 Char(7) 的 Donor.Gender DB 规范。另请注意每个 selectlistitem 的 SelectList 常量空格填充为“1234567”。