我已经用dynamic分配了assigned结果中的ViewBag,如下所示
ViewBag.viewBagModel = new { code = "P8c93E0NlQ8c0xE=", userRole = Student, schoolCode = 1000, schoolName = "New School 1_change", standardName = "LKG", sectionName = "B", associatedStudent = null }并且我能够在控制器/操作结果中为ex获得值:
ViewBag.viewBagModel.code // will return "P8c93E0NlQ8c0xE="但是,当我尝试同样的观点时,我得到的是错误声明
"{"'object‘不包含’代码‘的定义“}”
更多信息:这个动态对象的语法
new {string code, string userRole, int? schoolCode, string schoolName, string standardName,string sectionName, string user}我希望在视图中获取这个对象数据。
发布于 2019-08-22 10:08:28
您的对象是匿名类型。您将无法在视图中直接访问它。你仍然可以让它以另一种方式工作。
视图模型需要类型为dynamic
@model IEnumerable<dynamic>然后将模型的代码更改为ExpandoObject类型,如下所示:
ViewBag.viewBagModel = new { code = "P8c93E0NlQ8c0xE=", userRole = Student, schoolCode = 1000, schoolName = "New School 1_change", standardName = "LKG", sectionName = "B", associatedStudent = null }.ToExpando();注意上面的.ToExpando()。下面是带有ToExpando方法的静态类:
public static class Extensions
{
public static ExpandoObject ToExpando(this object anonymousObject)
{
IDictionary<string, object> anonymousDictionary = HtmlHelper.AnonymousObjectToHtmlAttributes(anonymousObject);
IDictionary<string, object> expando = new ExpandoObject();
foreach (var item in anonymousDictionary)
expando.Add(item);
return (ExpandoObject)expando;
}
}发布于 2019-08-22 10:09:12
使用ToString()扩展。我现在确实试过了,看起来很管用。话虽如此,我还是建议你使用一个非动态的模型。即使您已经有了视图的模型,也可以将其放到另一个模型中。
所以你的代码会像这样
ViewBag.viewBagModel.code.ToString();https://stackoverflow.com/questions/57606089
复制相似问题