提问人:dale 提问时间:10/27/2009 更新时间:2/12/2011 访问量:1317
MVC 1.0 DropDownList 静态数据选择不起作用
MVC 1.0 DropDownList static data select not working
问:
我是 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”。
评论