如何构建webapi控件并从中返回结果
本文关键字:返回 结果 控件 webapi 何构建 构建 | 更新日期: 2023-09-27 18:30:10
所以我在我的web api控制器中组合了一组存储过程调用。现在我需要返回组合结果。Javascript就像这样简单:
var result = [{
objectResult: value
},{
arryResult1:[value]
},{
arryResult2:[value]
}]
但是它c需要一个包含2个列表和一个对象的类?然后将其作为列表返回?这就是我有点迷失的地方。
[HttpPost]
[Route("builderContact")]
public List<usp_get_builder_contact_data_Result> GetBuilderContact(parameter parameter)
{
object[] parameters = { parameter.company_id, parameter.subdivision_id };
var builderContact = db.Database.SqlQuery<usp_get_builder_contact_data_Result>("sandbox.usp_get_builder_contact_data {0},{1}",
parameters).First();
var floorplanDataResult = db.Database.SqlQuery<usp_get_floorplan_data_Result>("sandbox.usp_get_floorplan_data {0},{1}",
parameters).ToList();
var floorplanRelatedResult = db.Database.SqlQuery<usp_get_floorplan_related_sections_Result>("sandbox.usp_get_floorplan_related_sections {0},{1}",
parameters).ToList();
return ?;
}
更新应答
[HttpPost]
[Route("bigEnchilada")]
public List<object> GetBuilderContact(parameter parameter)
{
object[] parameters = { parameter.company_id, parameter.subdivision_id };
var builderContact = db.Database.SqlQuery<usp_get_builder_contact_data_Result>("sandbox.usp_get_builder_contact_data {0},{1}",
parameters).First();
var floorplanDataResult = db.Database.SqlQuery<usp_get_floorplan_data_Result>("sandbox.usp_get_floorplan_data {0},{1}",
parameters).ToList();
var floorplanRelatedResult = db.Database.SqlQuery<usp_get_floorplan_related_sections_Result>("sandbox.usp_get_floorplan_related_sections {0},{1}",
parameters).ToList();
return (new object[] {
new object { builderContact = builderContact },
new object { floorplanDataResult = floorplanDataResult },
new object { floorplanRelatedResult = floorplanRelatedResult }
}).ToList();
}
如果您希望它与Javascript中的完全匹配,那么将返回类型更改为List<object>
并返回:
return new List<object> {
new { objectResult = builderContact },
new { arryResult1 = floorplanDataResult },
new { arryResult2 = floorplanRelatedResult }
};
IMHO在这种情况下,以下模型将更适合(如果你可以更改它的话):
var result = {
objectResult: value,
arryResult1: [value],
arryResult2: [value]
}
在这种情况下,您可以将返回类型设置为object
并返回:
return new {
objectResult = builderContact,
arryResult1 = floorplanDataResult,
arryResult2 = floorplanRelatedResult
};
稍微好一点,不是吗?
您可以简单地将它们全部concat
吗?
List<object> allItems = (
from x in floorplanDataResult.ToList() select new object()
).ToList().Concat(
from y in floorplanRelatedResult.ToList() select new object()
).ToList();
return allItems;
我不知道你的客户是否期望它们在相同的负载中。。。