我在名为 Category.cshtml
@Html.DropDownList("CategoryId", categoryList, new { style = "width: 100%;" })
它似乎生成了 Category.CategoryId
而不是我指定为 name 属性值的预期 CategoryId
。
我做错了什么?是否有可能获得与我使用 Html.DropDownList 指定的名称完全相同的名称?
更新 1.
我在 Telerik 网格上下文中使用该编辑器模板:
@(Html.Telerik().Grid<PriceCategoriesModel.PriceRuleModel>()
.Name("pricecategories-grid")
.DataKeys(keys => keys.Add(x => x.Id))
.DataBinding(...)
.Columns(columns =>
{
columns.Bound(x => x.Vendor)
.Width(50);
columns.Bound(x => x.Manufacturer)
.Width(100);
columns.Bound(x => x.Category);
//...
}) //...)
实际上,在我使用 Telerik 的同名 DropDown 之前,正确生成了选择元素的名称。
最佳答案
在反编译 Html.DropDownList
之后,我发现最终的字段名称是通过将 this.HtmlFieldPrefix + ".
添加到指定的名称和修剪 "."来计算的。之后。
然后找到了如何通过ViewData.TemplateInfo.HtmlFieldPrefix
来设置这个前缀。
然后我把所有东西放在一起,得到了这个糟糕的解决方案。
@{
var oldHtmlFieldPrefix = ViewData.TemplateInfo.HtmlFieldPrefix;
ViewData.TemplateInfo.HtmlFieldPrefix = String.Empty;
}
@Html.DropDownList("CategoryId", categoryList, new { style = "width: 100%;" })
@{
ViewData.TemplateInfo.HtmlFieldPrefix = oldHtmlFieldPrefix;
}
不想使用它 - 请告诉我还有另一种奇特的内置方法来处理它。
关于c# - 编辑器模板中的 Html.DropDownList 生成错误的名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23793766/