我使用EF创建了一个模型,然后在MVC中创建了一个控制器和视图。 模型类型A
有一个类型为B
的导航属性。所以当我创建A
时,我想选择一个B
。验证MVC(4)和EF(4)中的导航属性
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的值?
使用Visual Studio的断点,看看你在哪里得到这个错误 – Shyju
我不能:( 的建立讯息动作试验ModelState.IsValid所以它之前,我可以设置断点。 – BrendanS