当我使用 Massive ORM 通过 .Find() 方法检索记录时,它返回一个 Massive.DynamicModel.Query 对象,该对象与 ASP.MVC 3 View 相处得不太好。
Controller :
public ViewResult Details(int id)
{
// Massive ORM Find syntax requires this next statement to use 'dynamic' not 'var'
dynamic table = new Things();
// Thing will return as type Massive.DynamicModel.Query
var Thing = table.Find(ThingId:id);
return View(Issue);
}
在 View 中,我尝试了@model dynamic 和@model Massive.DynamicModel.Query,但都不允许我使用普通的@Model.Name 语法访问“Thing”对象的属性。
这里有一些关于如何使用 MVC3 View 处理 ExpandoObjects 的讨论,但没有关于到目前为止对我有用的 Massive.DynamicModel.Query 实现的特别讨论。
关于如何将 Massive.DynamicModel.Query 对象转换为类型化对象的任何一般想法?
最佳答案
两个词:查看模型。强类型 View 模型,这就是您应该传递给 View 的内容。不是动态,不是 expandos,不是匿名对象,不是 ViewData,不是 ViewBag => 只有强类型 View 模型。因此,首先定义一个 View 模型,该模型将表示该 View 将使用的数据。然后让您的 Controller 操作执行必要的操作,以便将您的存储库吐出的任何内容转换为将传递给 View 的 View 模型。
如果不遵循这个基本规则,您的 ASP.NET MVC 体验可能会很快变成一场噩梦。
关于asp.net-mvc-3 - 如何将 Massive ORM 动态查询输出到 MVC 3 View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7680839/