1

在我的主页上,我有一个搜索表单,人们可以在其中搜索房屋。它重定向到搜索房屋并在视图中显示它们的控制器和操作。

在结果视图中,我有几个这样的列表。

<select name="priceFrom">
    <option value="0">€0</option>
    <option value="100000">€100.000</option>
    <option value="200000">€200.000</option>
</select>

视图包含一个模型:@model Irrelevant.Namespace.ViewModels.SearchResults

我想选择他们在主页上选择的值,它存储在 SearchResults ViewModel 中。在我曾经做过的 WebFormsBind()Eval()中,MVC 中是否有任何等价物提供了一种干净的方式来实现这一点?

4

2 回答 2

2

SelectListItem有一个Selected属性,它将被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属性的存在可能会导致用户代理将其视为“真”。

理想情况下,您的所有下拉列表都将从您的视图模型生成。创建视图模型时,您将评估先前的条件(例如在另一个页面上的选择)并Selected在适当的项目上进行设置。

于 2013-03-09T18:16:59.447 回答
2

您必须为所有选项执行以下操作

<select name="priceFrom">
   <option value="0" @(Model.PriceFrom.ToString().Equals("0") ? "selected":"")>€0</option>
   <option value="100000" @(Model.PriceFrom.ToString().Equals("100000") ? "selected":"")>€100.000</option>
   ...
</select>

MVC 中还有另一种方法可以利用@Html.DropDownListFor您需要在模型中具有列表属性的方法,该属性可以使用指定的选定值直接绑定到 Dropdownlist

于 2013-03-09T18:18:38.537 回答