【发布时间】:2014-02-16 23:09:40
【问题描述】:
我用这段代码在 MVC 4 中创建了一个 EditorTemplate:
@model Drexx.Models.Account
@Html.DropDownListFor(model => model.LevelId, (IEnumerable<SelectListItem>)ViewBag.LevelId, String.Empty)
我的视图有这个代码:
@Html.EditorForModel();
我的模型有这个代码:
[UIHint("LevelDropDown")]
[DisplayName("Level")]
public int LevelId { get; set; }
public virtual Level Level { get; set; }
我的控制器在 Get 中有这个代码:
ViewBag.LevelId = new SelectList(db.Level, "Id", "Name");
我的控制器在帖子中有这个代码:
ViewBag.LevelId = new SelectList(db.Level, "Id", "Name", account.LevelId);
这是我运行源代码时的样子:
<select data-val="true" data-val-number="The field Level must be a number." data-val-required="Feltet Level skal udfyldes." id="LevelId_LevelId" name="LevelId.LevelId">
<option value=""></option>
<option value="1">Normal</option>
<option value="2">Admin</option>
</select>
<span class="field-validation-valid" data-valmsg-for="LevelId" data-valmsg-replace="true"></span>
为什么将下拉列表的 id 设置为“LevelId_LevelId”并将名称设置为“LevelId.LevelId”? 下拉菜单有效并显示了它应该显示的内容,但验证不起作用,因为 id/name 错误。验证突出显示下拉菜单,但不显示错误消息。
在我将它移到 EditorTemplate 之前/在我开始使用 EditorForModel 之前,下拉菜单工作得非常好
我是 EditorTemplates 的新手,所以很难弄清楚是什么原因造成的。
【问题讨论】:
标签: validation asp.net-mvc-4 drop-down-menu mvc-editor-templates