编辑:我找到了一个解决方案,我认为原因是什么,请参阅下面的答案。
我有一个下拉列表,其中所选的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>
在视图中,模型显示第一个项目被选中:
但是未在浏览器中选择该项目。呈现的代码如下:
<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>
其他一切正常,例如回发时选择的值是正确的。
谢谢!
答案 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 - 则不会选择任何内容。似乎有点反直觉,也许我会为此提出功能请求!