Asp.net mvc Telerik mvc网格,columns.bind到字典值。或;“模型中的动态特性”;

Asp.net mvc Telerik mvc网格,columns.bind到字典值。或;“模型中的动态特性”;,asp.net-mvc,telerik-mvc,Asp.net Mvc,Telerik Mvc,我有一个带有动态“属性”的模型(在DB级别,类似于系统)。 属性位于字典的字段中,并希望将它们显示在列中 型号: 该模型有一个静态数组(在static constractor中初始化)“property”名称和键: public static ModelSpecialParameter[] SpecialFields; 和一个字典(在模型创建中初始化,并添加所有可能的键)及其值 public Dictionary<int, string> ValuesForDynamicProp

我有一个带有动态“属性”的模型(在DB级别,类似于系统)。 属性位于
字典
的字段中,并希望将它们显示在列中

型号: 该模型有一个静态数组(在static constractor中初始化)“property”名称和键:

 public static ModelSpecialParameter[] SpecialFields;
和一个字典(在模型创建中初始化,并添加所有可能的键)及其值

public Dictionary<int, string> ValuesForDynamicProps;
我得到一个错误:

{“绑定列需要字段或属性访问表达式。”}

我还尝试:

columns.Bound(e => e.ValuesForDynamicProps[item.IdProperty]).Width(140).Title(item.DisplayName);
同样的错误

即使我想要的东西不可能实现,我也在寻找一个如何获得理想结果的想法:
添加和删除属性的灵活性。

直接使用Fluent API不是一种简单的方法。您需要做的是从另一个方法调用ajax,该方法将返回一个包含结构化数据的JSON

或者换一种方式试试,这几乎和你尝试的想法一样。也许可以帮助你:

据我所知,您在这里遇到了问题:

columns.Bound(e => ValuesForDynamicProps[item.IdProperty]).Width(140).Title(item.DisplayName);
传递给
Bound()
方法lambda,但不使用其参数(model)。 应该有这样的东西:

columns.Bound(e => e.ValuesForDynamicProps[item.IdProperty]).Width(140).Title(item.DisplayName);

谢谢,这只是问题中的一个类型错误。在源代码中,使用
e.
是正确的。我认为e=>e.ValuesForDynamicProps[item.IdProperty]不是一种PropertyExpression类型。为此,您需要创建一个返回属性表达式的静态方法。这里不需要lambda,因为它正在转换为属性表达式。您可以直接传递表达式
columns.Bound(e => e.ValuesForDynamicProps[item.IdProperty]).Width(140).Title(item.DisplayName);