我正在循环播放模型,但来自模型的值与下拉列表中显示的选定项目不同。相反,列表总是只显示第一个条目。DropDownListFor()未设置为模型值
@Html.DropDownListFor(modelItem => item.RecordType, Model.RecordTypes, new { id="recordType_" + item.TransactionID })
item.RecordType在模型中的值为5(我打印出来,所以我知道它就是这个值)。然而,下拉显示“初始”(这是一个值4),而不是“公司”(这是5的价值,这是我们的模型项目价值)。源中的列表定义为:
<select data-val="true" data-val-number="The field RecordType must be a number." id="recordType_63" name="item.RecordType">
<option value="4">Initial</option>
<option value="5">Firm</option>
<option value="6">Announced</option>
<option value="7">N/A</option>
</select>
如何将下拉列表设置为模型值?
public IEnumerable<SelectListItem> RecordTypes
{
//get { return new SelectListItem(recordTypes, "RECORD_TYPE_ID", "RECORD_TYPE"); }
get
{
return (from r in recordTypes
select new SelectListItem { Text = r.RECORD_TYPE, Value = r.RECORD_TYPE_ID.ToString() });
}
}
你如何构建'Model.RecordTypes'? – DaveParsons
编辑答案表明。我注意到的是SelectListItem需要2个字符串。我的记录具有整数值。不匹配导致问题?什么是最好的方式来处理,因为我会想象在所有数据库中,这些事情的id将被存储为整数,因为它们是,但在html中,它们似乎被视为字符串。在视图中,我无法在模型项目上执行ToString(),因为它对我的错误表示您无法像这样改变模型。 – user441521