Model view controller MVC 1.0下拉列表静态数据选择不工作

Model view controller MVC 1.0下拉列表静态数据选择不工作,model-view-controller,list,static,drop-down-menu,Model View Controller,List,Static,Drop Down Menu,我是MVC和C的新手。我正在尝试获取一个静态列表,以便与DropDownList控件一起工作,从而使渲染的选定值由DB中的当前模型值设置 在控制器中,我有: ViewData["GenderList"] = new SelectList(new[] { "Female", "Male", "Unknown" }, donor.Gender); 他认为: Gender:<%=Html.DropDownList("Gender", (IEnumerable<SelectLis

我是MVC和C的新手。我正在尝试获取一个静态列表,以便与DropDownList控件一起工作,从而使渲染的选定值由DB中的当前模型值设置

在控制器中,我有:

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

 Gender:<%=Html.DropDownList("Gender", (IEnumerable<SelectListItem>)ViewData["GenderList"]) %>
在调试器中,Gender.Gender是男性,但女性在视图中呈现


我读过很多与select相关的帖子,但我没有找到一篇适用于静态列表的帖子,例如,在没有值和名称的情况下。我可能在做一些愚蠢的事情…

这听起来像是个愚蠢的问题,但它是一个字符串值,它的大小写是否与您使用的硬编码值(例如“男性”)匹配

我问的原因是:

ViewData["GenderList"] = new SelectList(new[] { "Female", "Male", "Unknown" }, "Male");
工作是一种享受,但这

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

返回结果

多亏了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--")%>

注:PadRight7等于捐赠者。Char7的性别DB规格。还要注意每个selectlistitem的SelectList常量空格填充为1234567。

好主意。结果是捐赠者。性别是数据库中的一个字符。但是,尝试这样做:ViewData[Gender]=newselectlistnew[]{Female,Male,Unknown},provider.Gender.ToString;仍然没有带来快乐。现在,这可能是因为Model.Gender仍然是一个字符,不知道该怎么办。您可以始终在Gender对象上创建另一个属性,并让该属性根据charThanks Si的值返回正确的字符串,以便让我走上正确的轨道。我提出的解决方案如下所示,但基本上我要确保捐赠。Gender是padrightint,其中int是DB字符的长度。另一个技巧是在静态SelectList值中包含适当的空格。通过使用,MVC Html.DropDownList完美地发挥了它的魔力。教训:不要对db类型做任何假设:-