Html.DropDownListFor未选择的选定值

时间:2015-05-09 15:04:32

标签: asp.net-mvc razor

编辑:我找到了一个解决方案,我认为原因是什么,请参阅下面的答案。

我有一个下拉列表,其中所选的calue未正确呈现。

要创建的代码如下:

在控制器中

        var dlvm = new DonorIndexViewModel();

        return View(dlvm);

ViewModel由

创建
    public DonorIndexViewModel() {
        var list = CreateSearchList();
        SearchList = new SelectList(list, "Value", "Text", list.First().Value);
    }

CreateSearchList是:

        private IEnumerable<SelectListItem> CreateSearchList() {
        var list = new List<SelectListItem> {
            CreateSelectListItem(Constants.SurnameName, Constants.SurnameValue),
            CreateSelectListItem(Constants.CodeName, Constants.CodeValue),
            CreateSelectListItem(Constants.PostcodeName, Constants.PostcodeValue),
            CreateSelectListItem(Constants.Address1Name, Constants.Address1Value)
        };


        return list;
    }

查看代码是:

<div class="form-group">
    @Html.LabelFor(model => model.SearchList, htmlAttributes: new {@class = "control-label col-md-1"})
    <div class="col-md-11">
        @Html.DropDownListFor(model => model.SearchListId, Model.SearchList, "Select Search Type", htmlAttributes: new { @class = "control-label input-width-xlarge"})
    </div>
</div>

在视图中,模型显示第一个项目被选中: enter image description here

但是未在浏览器中选择该项目。呈现的代码如下:

<select class="control-label input-width-xlarge" data-val="true" data-val-      number="The field SearchListId must be a number." data-val-required="The SearchListId field is required." id="SearchListId" name="SearchListId">
<option value="">Select Search Type</option>
<option value="1">Surname</option>
<option value="2">Code</option>
<option value="3">PostCode</option>
<option value="4">Address (Line 1)</option>
</select>

其他一切正常,例如回发时选择的值是正确的。

谢谢!

2 个答案:

答案 0 :(得分:0)

API会获取所选项目的object,请尝试:

SearchList = new SelectList(list, "Value", "Text", list.First());

无需添加Value

答案 1 :(得分:0)

通过在控制器中设置Id来使其工作:

var dlvm = new DonorIndexViewModel();
dlvm.SearchListId = 1;

return View(dlvm);

这个值似乎决定了所选择的内容,因此如果没有设置 - 即值为0 - 则不会选择任何内容。似乎有点反直觉,也许我会为此提出功能请求!