我有几个属性是枚举,我想将它们绑定到网格。我正在使用以下代码
column.ForeignKey(p => p.<EnumpropertyName>,
Model.<EnumList_As_SelectedItemList>, "Value", "Text");
EnumpropertyName可以为Num。
在另一栏中,我指的是属性的子属性
column.ForeignKey(p => p.<Enumproperty2Name>.<childProperyName>,
Model.<AnotherEnumList_As_SelectedItemList>, "Value", "Text");
childProperyName可以为Num。
因为这是我的孩子对象
.Model(model =>
{
model.Id(p => p.InfoTableId);
model.Field(p => p.<Enumproperty2Name>).DefaultValue(new Enumproperty2Name());
})
这不起作用,因为我为这些下拉列表添加了新行和选择值,选择后会丢失值。但是,如果我删除nullable并让它们成为常规枚举属性,它们就可以工作。
如何使可空的枚举在kendo网格中工作。
由于
答案 0 :(得分:2)
要在Kendo Grid中添加下拉列表,请尝试以下操作。
columns.ForeignKey(p => p.ExamDateStatus, (System.Collections.IEnumerable)ViewData["ExamStatus"], "Value", "Text")
.Title("Status").EditorTemplateName("ComboForeignKey").Width(100);
&#34; ComboForeignKey&#34;是一个部分视图,它位于Views \ Shared \ EditorTemplates文件夹中。它的内容必须类似于以下内容。
@model object
@(
Html.Kendo().DropDownListFor(m => m).OptionLabel("Select Below...")
.HtmlAttributes(new { data_value_primitive = "true"})
.BindTo((SelectList)ViewData[ViewData.TemplateInfo.GetFullHtmlFieldName("") + "_Data"])
)
答案 1 :(得分:2)
我在将值绑定到可以为空的Enum属性时遇到了类似的问题。我设法用chamara的答案解决了这个问题。
最重要的一点是:
.HtmlAttributes(new { data_value_primitive = "true"})
它强制Kendo编辑器绑定到原始值类型(从而将简单的数字值发送到您的服务器)而不是
System.Nullable<YourEnumType>
该值类型稍后会被默认的MVC模型绑定器成功反序列化并转换为您的枚举值。与前一个选项(没有data_value_primitive属性)不同,在这种情况下,接收的值只是null。