这个问题有两个部分
数字1:即时消息收到与此帖子相同的问题唯一的区别是im在asp.net core v3.1中运行Dynamic Anonymous type in Razor causes RuntimeBinderException
我尝试了expando解决方案但我仍然得到“对象”不包含“ myproperty”的定义的错误信息。
这里是我的代码在controller
:中:中var obj = new { newRoundNumber = maxround + 1 }; IDictionary<string, object> dict = new ExpandoObject(); dict.Add("p", obj); var expando = StaticFunctions.ToExpando(dict); return PartialView("_RoundsPartial", expando);
在partialview
@{ var p = Model.p; var newRound = p.newRoundNumber; <--- fails for (var r = 1; r <= newRound; r++) { <div>@r</div> }
}
有人可以告诉我怎么了吗?
数字2:显然这曾经有用
new{ Project = projectInfo, WorkItem = workitem }.ToExpando());
但不再在asp.net Core v3.1中它允许的转换是ToString()有谁知道asp.net核心中的等效内容?
更新:有评论回复尝试此链接:https://sebnilsson.com/blog/convert-c-anonymous-or-any-types-into-dynamic-expandoobject/
简而言之:
using System.Dynamic; public static ExpandoObject ToExpandoObject(this object obj) { IDictionary expando = new ExpandoObject(); foreach (PropertyDescriptor property in TypeDescriptor.GetProperties(obj.GetType())) { expando.Add(property.Name, property.GetValue(obj)); } return (ExpandoObject) expando; }
当前,此行返回错误:
IDictionary expando = new ExpandoObject();
带有:无法将类型ExpandoObject隐式转换为IDictionary
反之亦然
这个问题编号1有两部分:即时消息接收与此帖子中的问题相同,唯一的区别是即时消息在Razor中运行在asp.net core v3.1动态匿名类型中会导致...
var expando = StaticFunctions.ToExpando(dict);
return PartialView("_RoundsPartial", dict);