【发布时间】:2012-03-20 17:22:14
【问题描述】:
我为创建、编辑、删除创建了视图。我正在使用编辑器模板在视图中显示一个下拉菜单,其中包含模板中的选项。
根据我的观点(创建和编辑):
<%: Html.EditorFor(model => model.Name) %>
//This is dropdown getting list from template.
问题:名称字段未显示在编辑视图中。
模板文件(NameDropDown.ascx)看起来像..
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl"%>
<%= Html.DropDownList(
"",
new SelectList(
new SelectListItem[]
{
new SelectListItem { Value = "", Text = "" , Selected = true},
new SelectListItem { Value = "Mark", Text = "Mark" },
new SelectListItem { Value = "Jim", Text = "Jim" },
new SelectListItem { Value = "Jason", Text = "Jason" }
},
"Value",
"Text",
Model
)
) %>
在我的模型类中..
[UIHint("NameDropDown")]
public string Name { get; set; }
在创建视图中 - 名称下拉列表正确呈现,我可以选择一个值并保存到数据库。当我回到我的列表视图并单击编辑时,编辑视图不会显示数据库中的名称值。 (DB在表中有name值)。
【问题讨论】:
-
你试过删除
Selected = true吗? -
它只是没有绑定到模型中的字段。我去掉了空选项,它显示了我想要编辑的任何行的第一选择。
-
它与我用于下拉菜单的编辑器模板有关。视图中不需要下拉的所有其他字段都没有这个问题。
-
如果我将 Html.EditorFor 更改为 Html.DisplayFor - 它工作正常。它从数据库中获取字段的值并将其填充到编辑视图中。但 EditorFor 尝试从编辑器模板呈现下拉菜单,它以某种方式弄乱了绑定。
标签: asp.net asp.net-mvc asp.net-mvc-3 drop-down-menu mvc-editor-templates