【问题标题】:@Html.EditorForModel() Dropdown@Html.EditorForModel() 下拉菜单
【发布时间】:2013-07-19 13:49:50
【问题描述】:

我正在开发 MVC4using @Html.EditorForModel() ,它将dropdownlist 显示为文本框,我想通过设置任何attribute 和覆盖模板来显示Dropdown 列表。请分享我的 MVC4 示例。

@model Models.Employee

@{
    ViewBag.Title = "Create";
}

<h2>Create</h2>

@using (Html.BeginForm()) {
    @Html.AntiForgeryToken()
    @Html.ValidationSummary(true)

    <fieldset>
        <legend>Employee</legend>
        @Html.EditorForModel()
        <p>
            <input type="submit" value="Create" />
        </p>
    </fieldset>
}

<div>
    @Html.ActionLink("Back to List", "Index")
</div>

@section Scripts {
    @Scripts.Render("~/bundles/jqueryval")
}

提前致谢。

【问题讨论】:

    标签: asp.net html asp.net-mvc-4 razor


    【解决方案1】:

    它是覆盖模板的必要条件吗?您可以使用 @Html.DropDownList() 助手。

    asp.net网站上有完整的使用示例,可​​以下载项目:Here

    【讨论】:

    【解决方案2】:

    您可以定义一个表示下拉列表的视图模型:

    public class ItemsViewModel
    {
        public string SelectedValue { get; set; }
    
        public IEnumerable<SelectListItem> Values { get; set; }
    }
    

    将在您的主视图模型中使用:

    public class MyViewModel
    {
        public ItemsViewModel DropDown1 { get; set; }
        public ItemsViewModel DropDown2 { get; set; }
        ...
    }
    

    现在剩下的就是为ItemsViewModel 编写一个自定义编辑器模板,它应该放在~/Views/Shared/EditorTemplates/ItemsViewModel.cshtml 中。请注意,模板的名称和位置很重要:

    @model ItemViewModel
    @Html.DropDownListFor(x => x.SelectedValue, Model.Values)
    

    这就是它所需要的。

    【讨论】:

    • 嗨,我正在使用@HTML.EditorForModel() 这意味着它加载模型运行时,没有代码
    • 当然,在我的示例中,模型是MyViewModel。您的主视图中只有:@model MyViewModel @Html.EditorForModel().
    • 我知道您正在使用 EditorForModel 但这根本不是问题。它应该仍然有效。
    • 因此,根据您的示例运行时,它会根据返回 ItemViewModel 的模型绑定到下拉列表,这很好,但可以通过数据注释(例如 DropdownList 或其他东西)覆盖属性
    • 是的,您可以使用UIHint("TemplateName") 属性来覆盖约定。在这种情况下,~/Views/Shared/EditorTemplates/TemplateName.cshtml 将为指定的属性呈现。但是,如果您依赖标准命名约定,其中模板名称是类型的名称,您甚至不需要使用 UIHint 来装饰您的模型。
    猜你喜欢
    • 2018-01-27
    • 2015-08-08
    • 2021-10-14
    • 2012-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-22
    • 1970-01-01
    相关资源
    最近更新 更多