【发布时间】:2012-08-25 19:29:31
【问题描述】:
我用 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 的值?
【问题讨论】:
-
使用 Visual Studio 断点,看看你在哪里得到这个错误
-
我不能 :( Create Post 操作测试 ModelState.IsValid 所以它在我设置断点之前。
标签: c# asp.net-mvc entity-framework validation asp.net-mvc-4