Asp.net mvc MVC5下拉列表,用于选择不正确的值

Asp.net mvc MVC5下拉列表,用于选择不正确的值,asp.net-mvc,dropdownlistfor,Asp.net Mvc,Dropdownlistfor,我意识到关于这个问题有很多问题,但是我已经找到的答案中没有一个和我正在做的完全一样 视图模型 我的问题是,当视图加载时,1记录的州下拉列表设置为阿拉巴马州,而不是我预期的阿拉斯加。有人看到我明显丢失的东西吗\ 编辑 JamieD77的回答解决了我的问题。我改变了我的观点如下 <td> @Html.DropDownListFor(x => x.FreightDiscounts[i].State, n

我意识到关于这个问题有很多问题,但是我已经找到的答案中没有一个和我正在做的完全一样

视图模型

我的问题是,当视图加载时,1记录的州下拉列表设置为阿拉巴马州,而不是我预期的阿拉斯加。有人看到我明显丢失的东西吗\

编辑

JamieD77的回答解决了我的问题。我改变了我的观点如下

<td>
    @Html.DropDownListFor(x => x.FreightDiscounts[i].State, 
                                    new SelectList(Model.DStates, "key", "value", Model.FreightDiscounts[i].State), new { @class = "form-control" })
</td>
我将我的视图模型更改为

public Dictionary<String, String> DStates { get; set; }

DStates.Add("AL","Alabama" );
DStates.Add("AK","Alaska" );

可能是因为您的文本和值字段颠倒了


编辑:OP已经更新了他的代码,它们原来是颠倒的。

可能是因为您的文本和值字段颠倒了吗


编辑:OP已经更新了他的代码,它们原来是反向的。

在为其构建DropDownList时,尝试使用SelectList并设置所选项目

@Html.DropDownListFor(x => x.FreightDiscounts[i].State, 
    new SelectList(Model.States, "Value", "Text", x.FreightDiscounts[i].State), 
    new { @class = "form-control" })

在构建DropDownList for时,尝试使用SelectList并设置所选项目

@Html.DropDownListFor(x => x.FreightDiscounts[i].State, 
    new SelectList(Model.States, "Value", "Text", x.FreightDiscounts[i].State), 
    new { @class = "form-control" })

有趣的我解决了那个简单的小问题,但问题仍然很有趣。我解决了那个简单的小问题,但问题仍然存在。他完全解决了。我真的不是100%确定它为什么起作用,但经过3个小时的痛击,我会接受它。谢谢如果要选择所选属性,则生成的中的一个属性需要具有所选属性。另一个选项是在SelectListItem上设置Selected属性,如下所述;但这会使您在所有下拉列表中选择该选项。。所以最好使用新的选择列表,在这种情况下,解释得更详细一点。这完全修复了它。我真的不是100%确定它为什么起作用,但经过3个小时的痛击,我会接受它。谢谢如果要选择所选属性,则生成的中的一个属性需要具有所选属性。另一个选项是在SelectListItem上设置Selected属性,如下所述;但这会使您在所有下拉列表中选择该选项。。因此,在本例中,最好使用新的SelectList,并对其进行更详细的解释。
public Dictionary<String, String> DStates { get; set; }

DStates.Add("AL","Alabama" );
DStates.Add("AK","Alaska" );
@Html.DropDownListFor(x => x.FreightDiscounts[i].State, 
    new SelectList(Model.States, "Value", "Text", x.FreightDiscounts[i].State), 
    new { @class = "form-control" })