C# 无处不在的HTML.dropdownlist用于不选择默认值,即使我可以动态查询所选值

C# 无处不在的HTML.dropdownlist用于不选择默认值,即使我可以动态查询所选值,c#,razor,model-view-controller,C#,Razor,Model View Controller,我在这里看到了很多关于DropDownlistForHTML控件没有显示所选选项的问题 我的应用程序使用的是视图模型,从我到目前为止的阅读来看,在大多数情况下,这是由于变量类型是不同的数据类型 在我的例子中,dropdownlistfor填充下拉列表的列表部分,但不设置当前值 他认为: @Html.DropDownListFor(m => Model.TypeCaption, Model.Types) 在视图模型中: public MyData() { public int Id

我在这里看到了很多关于DropDownlistForHTML控件没有显示所选选项的问题

我的应用程序使用的是视图模型,从我到目前为止的阅读来看,在大多数情况下,这是由于变量类型是不同的数据类型

在我的例子中,dropdownlistfor填充下拉列表的列表部分,但不设置当前值

他认为:

@Html.DropDownListFor(m => Model.TypeCaption, Model.Types)
在视图模型中:

public MyData()
{
    public int Id { get; set; }
    public string TypeCaption { get; set; }
    public string Reference { get; set; }
    public IEnumerable<SelectListItem> Types { get; set; }     
}
显示Types属性中的第二个SelectlistItem,但它显示的是第一个

我已经通过使用检查数据类型是否相同

Model.Types.Where(x => x.Text == Model.TypeCaption).Select(x => x.Value)
返回正确答案:Value=“2”

所以我不知道为什么会这样

已更新


我只是尝试了斯克罗比的答案,结果没有什么不同。

我找到了解决方案,如果你想这么说的话

好的,解决方案是改变我填充SelectListitem数组的方式。我最初使用的是:

IEnumerated<SelectListItem> Types 
Value  = "1",   Text = "Option1"
Value  = "2",   Text = "Option2"
Value  = "3",   Text = "Option3"
IEnumerated类型
Value=“1”,Text=“Option1”
Value=“2”,Text=“Option2”
Value=“3”,Text=“Option3”
我将此更改为:

IEnumerated<SelectListItem> Types 
Text = "Option1"
Text = "Option2"
Text = "Option3"
IEnumerated类型
Text=“选项1”
Text=“选项2”
Text=“选项3”

现在可以了。

应该是
@Html.DropDownListFor(m=>m.TypeCaption,Model.Types)
更新了Scrobi的问题和答案
IEnumerated<SelectListItem> Types 
Value  = "1",   Text = "Option1"
Value  = "2",   Text = "Option2"
Value  = "3",   Text = "Option3"
IEnumerated<SelectListItem> Types 
Text = "Option1"
Text = "Option2"
Text = "Option3"