C# 在C函数中使用JSONResult
我有一个函数,它以下面的方式返回JsonResultC# 在C函数中使用JSONResult,c#,asp.net-mvc,json,C#,Asp.net Mvc,Json,我有一个函数,它以下面的方式返回JsonResult var attachments = (from a in ar.Attachments select new { id = a.Id, filename = a.FileName }).ToArray(); var result = new { comments = "Some string", attachments = attachments
var attachments = (from a in ar.Attachments
select new { id = a.Id, filename = a.FileName }).ToArray();
var result = new
{
comments = "Some string",
attachments = attachments
};
return this.Json(result);
我需要在另一个类中使用这个结果,在这个类中我需要访问注释和附件。这里,附件是一个字符串数组,注释是一个字符串。请让我知道如何做到这一点。您可以为结果创建一个ViewModel,然后重用该类。ViewModel只是一个POCO或DTO。这个想法是,它给你一个不同的方式来看待你的数据,没有什么特别的 所以你最终得到了三个部分 获取数据方法:
public CommentsViewModel GetViewModel()
{
var attachments =
(from a in ar.Attachments
select new { id = a.Id, filename = a.FileName }).ToArray();
var result = new CommentsViewModel
{
comments = "Some string",
attachments = attachments
};
return result;
}
您的控制器方法:
public JsonResult Get()
{
return this.Json(GetViewModel());
}
而您的另一个方法将直接调用GetViewModel。这将为您提供一点帮助。好的,下面是一个我认为应该适合您使用动态类型的答案 这是您在控制器上调用的方法…我根据您在本例中的要求输入了“硬编码”样本数据…我从注释中删除了“s”,原因是:
public JsonResult GetJsonData()
{
var result = new
{
comment = "Some string",
attachments = new string[]{"/folder/file-1.jpg", "/folder/file-2.jpg"}
};
return this.Json(result);
}
直接调用控制器操作并读取JsonResult的代码:
dynamic result = GetJsonData().Data;
//var comment will result in a string which equals "Some string" in this example
var comment = result.comment;
//var attachments will result in a string[] which is equal to new string[]{"/folder/file-1.jpg", "/folder/file-2.jpg"}
var attachments = result.attachments;
@斯兰道:用例真的重要吗?如果他试图构建一个通用的帮助程序库呢?您想在视图中检索这个JSON信息吗?如果是这样,那很容易。@Robert-不太可能,但有点像。如果他误解了非常简单的c操作,并且他可以将字符串和数组作为c对象返回给另一个c函数,从而更容易读取和处理数据,那么我认为他应该知道这一点。第二,如果他将此返回到MVC视图,他应该适当地标记他的问题。嗨。。这是控制器中的现有函数,其结果正在客户端上使用。我需要在我的类(服务器端)中重用这个函数。所以,我有一个c函数,我在这里调用这个函数。。这是控制器中的现有函数,其结果正在客户端上使用。我需要在我的类(服务器端)中重用这个函数。所以,我有一个c函数,在这里我调用这个函数。@Feroz所以如果我理解正确,你可以创建一个方法,返回表示数据的ViewModel对象,就像我建议的那样,只需更改你的linq以选择新的ViewModelName{}。然后,您现有的方法将只调用此方法,并将ViewModel结果传递到this.Json中。这样,代码中需要处理注释的其他部分只需处理ViewModel。这有意义吗?@如果可能的话,考虑一个通用的方法来生成数据。返回JSON只是该方法的包装器;或者,可以从通用方法访问原始形式的数据。匿名类型没有可访问的命名类型,例如,必须提升到要返回或传递的对象,但具有静态访问、动态访问或动态的已定义类型可以简单地传递。非常感谢您的关注。但是我不能改变返回结果的函数。它是一个现有的,正在客户端的许多其他地方使用。我只需要获取JSONResult,它正在返回原来的方式,我现在对函数的调用是从服务器端进行的。@Feroz哦,我明白了,很抱歉,我不能为您的需要提供太多帮助。