序列化数据表以在RAZOR中使用

序列化数据表以在RAZOR中使用,razor,asp.net-mvc-4,lambda,Razor,Asp.net Mvc 4,Lambda,我有一个使用RAZOR的ASP.NETMVC4应用程序。我的控制器操作将数据加载到数据表中(我继承了代码)。我需要在视图中将该数据呈现为JSON。我尝试使用此处向我推荐的方法: 我相信数据表是我的问题的根源。同时,我也不知道该怎么办。如何从视图中呈现为JSON的DataRow元素中获取某些列?目前,我的控制器操作中包含以下内容: DataTable results = GetFromDatabase(); ViewBag.Results = results; 那么,在我看来,我有: @{

我有一个使用RAZOR的ASP.NETMVC4应用程序。我的控制器操作将数据加载到数据表中(我继承了代码)。我需要在视图中将该数据呈现为JSON。我尝试使用此处向我推荐的方法:

我相信数据表是我的问题的根源。同时,我也不知道该怎么办。如何从视图中呈现为JSON的DataRow元素中获取某些列?目前,我的控制器操作中包含以下内容:

DataTable results = GetFromDatabase();
ViewBag.Results = results;
那么,在我看来,我有:

@{
    var serializer = new JavaScriptSerializer();
    var resultsJson = serializer.Serialize(Enumerable.Select(ViewBag.Results, result => new { id = result["ID"], name = result["Name"] }));
    Html.Raw(resultsJson);
}
当我尝试这样做时,我收到一个错误,上面写着: 如果不首先将lambda表达式强制转换为委托或表达式树类型,则无法将其用作动态调度操作的参数


我不知道如何解决这个问题。

首先检查,我建议在过程的前面,在控制器代码或模型中进行序列化,并让控制器将JSON对象传递给视图。另外,请提供一些您希望在视图上显示的内容的上下文。我设想数据应该被对象化,然后你将序列化这些对象,而不是一个
数据表
,以及它的所有开销等等。