我用 EF 创建了一个模型,然后在 MVC 中创建了一个控制器和视图。模型类型A
具有要键入的导航属性B
。因此,当我创建时,A
我想选择一个B
.
MVC 向导创建控制器并仅查看为标量属性创建的字段。因此,我将创建操作更改A
为:
public ActionResult Create() //Create action for A
{
List<B> b = db.B.ToList(); //db is my DataContext
ViewData["B"] = companies.Select(option => new SelectListItem
{
Text = (option.Name.ToString()),
Value = (option.Id.ToString())
});
return View();
}
并添加到我的观点:
<div class="editor-label">
@Html.LabelFor(model => model.B)
</div>
<div class="editor-field">
@Html.DropDownListFor(model => model.B, (IEnumerable<SelectListItem>)ViewData["B"], "---- Select B ----")
@Html.ValidationMessageFor(model => model.B)
</div>
到目前为止一切都很好,我得到了 HTML
<select class="valid" id="B" name="B">
<option value="">---- Select B ----</option>
<option selected="selected" value="1">TestB</option>
</select>
但是,当我提交时,我收到错误:
The value '1' is invalid.
没有编写任何验证,它一定是在某处自动生成的。如何更正它以检查 ViewData["B"] 集合 ID 的值?