将DB值绑定到下拉(使用编辑器模板)问题

时间:2012-03-20 17:22:15

标签: asp.net asp.net-mvc asp.net-mvc-3 drop-down-menu mvc-editor-templates

我为创建,编辑,删除创建了视图。我正在使用编辑器模板在视图中显示一个下拉列表,其中包含模板中的选项。

在我的观看(创建和编辑):

  <%: 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在表中有名称值。)

1 个答案:

答案 0 :(得分:0)

您的模板中似乎缺少模型类型(字符串):

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl"%>

将其更改为:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<string>"%>

我刚刚进行了本地测试,效果很好。