在我的主页上,我有一个搜索表单,人们可以在其中搜索房屋。它重定向到 Controller 和 Action ,搜索房屋并在 View 中显示它们。
在结果 View 中,我有几个这样的列表。
<select name="priceFrom">
<option value="0">€0</option>
<option value="100000">€100.000</option>
<option value="200000">€200.000</option>
</select>
View 包含一个模型:@model Irrelevant.Namespace.ViewModels.SearchResults
我想选择他们在主页上选择的值,它存储在 SearchResults ViewModel 中。在 WebForms 中,我曾经执行 Bind()
或 Eval()
,MVC 中是否有任何等效项提供了一种干净的方法来完成此操作?
最佳答案
SelectListItem
有一个 Selected
属性(property),将受到Html.DropDownListFor<>()
的尊重.
如果您手动声明 selects
的标记,您最终会得到一个功能强大但不够优雅的解决方案,例如:
<select name="priceFrom">
<option value="0">€0</option>
<option value="100000" @(Model.SomeCondition ? "selected" : "" )>€100.000</option>
<option value="200000" @(Model.SomeCondition ? "selected" : "" )>€200.000</option>
</select>
请记住,selected
的存在属性可能会导致用户代理将其视为“真”。
理想情况下,您的所有下拉列表都将从您的 View 模型生成。创建 View 模型时,您将评估先前的条件(例如另一页上的选择)并设置 Selected
在适当的项目上。
关于c# - 选择静态选择列表的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15314075/