我们的VS-2022开发项目是Blazor WASM Core-6,使用本地REST-API处理数据。使用Postman,我的测试并没有像人们所期望的那样,通过控制器调用存储库函数来获取数据--使用断点和本地调试。
存储库函数返回语句为return Ok(vehicleTrips);
。IEnumerable vehicleTrips
数据变量包含DB提取所需的正确四条记录。
从控制器调用存储库函数为:
var result = (await motripRepository.GetMOTripsByDateRange((int)eModelType.Vehicle, pVehicleList, pDateFrom, pDateTo)!)!;
控制器函数签名为:
[HttpGet("byDateRange/{pVehicleList}/{pDateFrom}/{pDateTo}")]
[ActionName(nameof(GetVehicleMOTripsByDateRange))]
public async Task<ActionResult<IEnumerable<MOTRIP>>> GetVehicleMOTripsByDateRange([FromRoute] string pVehicleList, [FromRoute] string pDateFrom, [FromRoute] string pDateTo) {
**这是我的问题。**来自存储库的result
返回值有一个为空的return.Value
--不是我们应该的四个trip记录。
此外,VS-Studio的“local”调试器显示return
还有其他属性,如.Return
和.Return.Value.Count
为4。
**我的问题是“是什么导致了这种情况”?**我使用Postman的所有其他rest-api调用和控制器调用都能正常工作。
**我是否从Visual-Studio中选择了错误的“控制器”类型?**我对编写经典的MVC Web应用程序毫无经验。VS-Blazor提供了许多控制器类型。过去,我“复制”了一个正常工作的控制器,并为不同的“模型””更改了代码”。
您的帮助是受欢迎的,并表示赞赏.谢谢...约翰
1条答案
按热度按时间f87krz0w1#
我发现了导致这个结果的真正原因,值为空,与控制器类型无关--它是在解释来自存储库函数的返回值时出现的。
我发现了一个SO链接Get a Value from ActionResult in a ASP.Net Core API Method,它解释了如何响应reply/answer部分中的
ActionResult<objecttype>
返回值,其中单词“actual”是第一个定义的,您将在下面修改的代码中看到这个单词“actual”。我修改过的代码贴在这里,代码部分内部和代码部分下方都有注解。代码内部的注解以“〈==”开头,后面是文本,直到“==〉”
请使用浏览器搜索“〈==”来查找我的代码注解。请使用浏览器搜索“actual”和“OkObjectResult”来查看相关的代码修复语句。