gpt4 book ai didi

asp.net-mvc - Telerik MVC 网格与 ExpandoObject 列表

转载 作者:行者123 更新时间:2023-12-04 16:26:03 25 4
gpt4 key购买 nike

我正在尝试将 Telerik MVC 与动态 ExpandoObjects 的集合一起使用。

Controller 是:

[GridAction]
public ActionResult TestDiario()
{
var result = new List<dynamic>();

dynamic diarioModel = new ExpandoObject();

var dictionary = (IDictionary<string, object>)diarioModel;

dictionary.Add("ID", 1);
dictionary.Add("AlunoID", 12781);
dictionary.Add("DAY05CLASS1", true);
dictionary.Add("DAY05CLASS2", true);
dictionary.Add("DAY07CLASS1", true);
dictionary.Add("DAY08CLASS1", true);

result.Add(diarioModel);
return View(result);
}

View 是:
@using Telerik.Web.Mvc.UI

@model IEnumerable<dynamic>

@{
ViewBag.Title = "TestDiario";
}

@(Html.Telerik().Grid(Model).Name("Grid")
.DataKeys(dataKeys => dataKeys.Add("ID"))
.Columns(columns =>
{
columns.Bound("MatAnoID").Visible(true);
columns.Bound("AlunoID");
columns.Bound("NroClasse");
columns.Bound("Aluno");

var dictionary = (IDictionary<string, object>)Model;
foreach (var property in (IDictionary<String, Object>)dictionary)
{
if (property.Key.ToString().Remove(3) == "DAY")
{
columns.Bound(property.Key);
}
}
})
.Pageable()
.Sortable()
.Groupable()
.Filterable()

)

循环 foreach 获取由 DAY 字符串开始的动态字段。

当我运行项目时,出现以下错误:

{“无法转换类型化对象 'System.Collections.Generic.List 1[System.Object]' to type 'System.Collections.Generic.IDictionary 2[System.String,System.Object]'。”}

有没有办法使用带有循环字段的 Telerik MVC Control 动态对象?

最佳答案

是的,你可以,而且你很接近,但犯了一些错误。

1) Model 不是 IDictionary 类型,因为它不是 expando 对象。它是一个动态列表。

这有点小技巧,但为了解决这个问题,我只取了可枚举中的第一个(或默认)元素,然后从中制作了一个字典。

2) 您正在尝试绑定(bind)在您的 expando 对象中不作为属性存在的列。

我评论了那些。

3)我认为您正在寻找以“DAY”开头的键。如果您想从列名中删除“DAY”,您可以调整我的示例代码。

除此之外它工作正常:

@(Html.Telerik().Grid(Model).Name("Grid")
.DataKeys(dataKeys => dataKeys.Add("ID"))
.Columns(columns =>
{
//NOTE: some of these columns are not valid because you didn't include them as properties
//columns.Bound("MatAnoID").Visible(true);
//columns.Bound("NroClasse");
//columns.Bound("Aluno");

columns.Bound("AlunoID");

var first = Model.FirstOrDefault();
if (first != null) {
var dictionary = (IDictionary<string, object>)first;
foreach (var property in dictionary) {
string key = property.Key.ToString();
if (key.StartsWith("day", StringComparison.InvariantCultureIgnoreCase)) {
columns.Bound(property.Key);
}
}
}

})
.Pageable()
.Sortable()
.Groupable()
.Filterable()
)

关于asp.net-mvc - Telerik MVC 网格与 ExpandoObject 列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13371034/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com