C# 如何在提交后使选定值的DropDownList保持不变

C# 如何在提交后使选定值的DropDownList保持不变,c#,asp.net-mvc,C#,Asp.net Mvc,以下代码块用于使DropDownList for的选定值在提交后保持不变: @Html.DropDownListFor(x => Model.Value, new SelectList(Model.Values, @Model.Value)) 在此代码块中,Model.Values是字符串列表,@Model.Value指定要选择的值 这段代码工作得很好,但我正试图用SelectListItems列表(而不是字符串列表)做同样的事情。在下面的代码Model.Values中是SelectLi

以下代码块用于使DropDownList for的选定值在提交后保持不变:

@Html.DropDownListFor(x => Model.Value, new SelectList(Model.Values, @Model.Value))
在此代码块中,
Model.Values
是字符串列表,
@Model.Value
指定要选择的值

这段代码工作得很好,但我正试图用
SelectListItem
s列表(而不是字符串列表)做同样的事情。在下面的代码
Model.Values
中是
SelectListItem
s的列表

@Html.DropDownListFor(x => Model.Value, Model.Values, Model.Value,
     new 
     { 
         id = "ValueDD", onchange = "this.form.submit()" 
     })

是否可以像我在第一个代码块中所做的那样使用
@Model.Value
来设置所选值?

SelectListItem
有一个属性
selected
,需要为所选项目设置该属性,请参阅


因此,在您的控制器中,您可以设置需要选择的项的
Selected
属性,假设您正在使用该控制器构建
模型值列表。是的,我尝试过(并且成功了),但我非常喜欢使用
@Model.Value
的简单性。然而,我想我可以理解为什么
@Model.Value
不起作用:在第一个示例中,在视图中创建了
列表
,因此我还可以在视图中设置
所选的
值。但是,在第二个示例中,
列表
是在控制器中创建的,因此需要在控制器中设置
所选的
值。是的,我相信您可以在创建
下拉列表
之前在视图中迭代
模型.值
列表,但这充其量只是一个小问题