Asp.net mvc 在自定义编辑器模板中,如何访问应用于编辑控件的字段名?

Asp.net mvc 在自定义编辑器模板中,如何访问应用于编辑控件的字段名?,asp.net-mvc,asp.net-mvc-3,editortemplates,Asp.net Mvc,Asp.net Mvc 3,Editortemplates,可能重复: 例如,当输出特殊类型实体的编辑控件时,假设是颜色或其他: @Html.EditorFor(product => product.Color) 我希望它输出一个下拉列表,所以我尝试创建一个自定义编辑器模板来呈现这样一个下拉列表。以下是到目前为止我的模板的外观: @model MyProject.Models.Color @using (var db = new MyProject.Models.DbContext()) { @Html.DropDownList(???

可能重复:

例如,当输出特殊类型实体的编辑控件时,假设是颜色或其他:

@Html.EditorFor(product => product.Color)
我希望它输出一个下拉列表,所以我尝试创建一个自定义编辑器模板来呈现这样一个下拉列表。以下是到目前为止我的模板的外观:

@model MyProject.Models.Color
@using (var db = new MyProject.Models.DbContext())
{
    @Html.DropDownList(???,
        new SelectList(db.Colors, "Id", "Name", Model))
}
我应该放什么来代替指定下拉列表的HTML名称属性的参数

出于显而易见的原因,这不仅仅是颜色。考虑相同类型的不同字段的相同编辑模板的多次调用,例如:

@Html.EditorFor(product => product.InnerColor)
@Html.EditorFor(product => product.OuterColor)
显然,这需要生成具有不同名称的下拉列表。

的答案建议使用

ViewData.TemplateInfo.HtmlFieldPrefix
因此,完整的代码将类似于

@model MyProject.Models.Color
@using (var db = new MyProject.Models.DbContext())
{
    @Html.DropDownList(ViewData.TemplateInfo.HtmlFieldPrefix + "_Color",
        new SelectList(db.Colors, "Id", "Name", Model))
}
答案建议使用

ViewData.TemplateInfo.HtmlFieldPrefix
因此,完整的代码将类似于

@model MyProject.Models.Color
@using (var db = new MyProject.Models.DbContext())
{
    @Html.DropDownList(ViewData.TemplateInfo.HtmlFieldPrefix + "_Color",
        new SelectList(db.Colors, "Id", "Name", Model))
}

下拉列表本身已收到正确的字段名。传入name参数的任何内容都会连接到字段名,从而无法识别它

正确的解决方案是传递空字符串:

@Html.DropDownList("", new SelectList(...))

下拉列表本身已收到正确的字段名。传入name参数的任何内容都会连接到字段名,从而无法识别它

正确的解决方案是传递空字符串:

@Html.DropDownList("", new SelectList(...))