【问题标题】:Can I create drop down list while using editor for?我可以在使用编辑器时创建下拉列表吗?
【发布时间】:2014-04-17 10:14:57
【问题描述】:

如何使用数据注释创建下拉列表?

我想实现由

生成的标记
@Html.DropDownListFor(x=>x.ContactType, Model.ContactTypeOptions)

进行设置,以便我可以使用它会生成下拉列表:

@Html.EditorForModel(Model)

我目前的模型是:

public class ContactModel
    {
        public string ContactType { get; set; }
        public IList<SelectListItem> ContactTypeOptions
        {
            get
            {
                return new List<SelectListItem>()
        {
            new SelectListItem(){Text = "Options"}
        };
            }
        }
        [Required(AllowEmptyStrings = false)]
        [MinLength(15)]
        [DataType(DataType.MultilineText)]
        public string Message { get; set; }
    }

更新 我不想使用局部视图。

【问题讨论】:

    标签: c# asp.net-mvc-5


    【解决方案1】:

    你可以试试这样的:

    public class ContactModel
    {
        [UIHint("_DropDownList")]
        public SelectList ContactType { get; set; }
    }
    

    设置(在您的控制器中)ContactType.Items 为您的选项列表,ContactType.SelectedValue 为您最初选择的值。

    然后定义一个局部视图_DropDownList.cshtml

    @model SelectList
    
    @Html.DropDownListFor(m => m.SelectedValue, Model)
    

    然后您应该能够使用@Html.EditorFor(m =&gt; m.ContactType) 并获得您的下拉菜单。而且你可以在任何地方重复使用它!

    现在,当您执行 @Html.EditorFor(m =&gt; m.Property) 时,您甚至可能会立即获得这种行为,其中 m.PropertySelectList。不确定那个。

    如果您只想在您的ContactModel 上使用EditorForModel(),那么您可以创建一个名为ContactModel.cshtml 的编辑器模板并执行以下操作:

    @model ContactModel
    
    @Html.DropDownListFor(m => m.ContactType,
        new SelectList(Model.ContactTypeOptions, Model.ContactType))
    

    请注意,在已键入 ContactModel 的视图中,应将其称为 @Html.EditorForModel() - 在重载 EditorForModel(Object) 中作为参数传入的对象用于附加视图数据,不是 用于模型对象。 EditorForModel 总是为 current 视图模型呈现一个编辑器模板。

    【讨论】:

    • 如果这不能满足你的要求,你需要少含糊。
    • 抱歉阅读我的评论没有意义,我的意思是说我想避免使用部分视图并且仍然以相同的方式呈现下拉列表,您的方式是部分解决方案,我不喜欢我需要创建局部视图并仍然呈现它,我还需要修改现有代码而不是呈现下拉列表并使用局部视图。这使我得出结论,它实际上比创建完整的局部视图涉及更多的工作。无论如何都要尝试一下
    猜你喜欢
    • 1970-01-01
    • 2015-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-26
    • 2020-07-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多