c# - 编辑器模板中的 Html.DropDownList 生成错误的名称

标签 c# asp.net asp.net-mvc-4 razor telerik-mvc

我在名为 Category.cshtml

的文件中的 EditorTemplate 中有以下下拉声明
@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/

相关文章:

c# - asp.net MVC 路由顺序

asp.net-mvc-4 - Autofac 和 ASP .Net MVC 4 Web API

c# - WPF 默认日期时间格式

javascript - d3.js scaleTime 返回未定义

asp.net - 使用 .NET 框架通过 Web 将信号发送到串行端口 (RS232)

c# - 在重定向时显示动画 gif 文件直到 asp 页面加载?

c# - 编辑时禁用用户名验证

c# - 动态 Razor 数据源

c# - 线段与圆的交点

用于从外部线程更改标签文本的 C# 通用方法。