c# - 将 MediatR 从 MVC 项目移动到 Razor Pages。无法使基本语法正常工作
问题描述
工作的 MVC 版本是
public class StatCategoriesController : BaseController
{
[HttpGet]
public async Task<ActionResult<IEnumerable<StatCategoryPreviewDto>>> GetStatCategoryPreview([FromQuery] GetStatCategoryPreviewQuery query)
{
return Ok(await Mediator.Send(query));
}
}
RAZOR 版本是
public class CategoriesModel : PageModel
{
private IMediator _mediator;
protected IMediator Mediator =>
_mediator ?? (_mediator = HttpContext.RequestServices.GetService<IMediator>());
public async Task<IEnumerable<StatCategoryPreviewDto>> OnGet([FromQuery] GetStatCategoryPreviewQuery query)
{
return await Mediator.Send(query);
}
}
并且 RAZOR 版本不返回 JSON.. 而是返回..
nvalidOperationException:不支持的处理程序方法返回类型“System.Threading.Tasks.Task 1[System.Collections.Generic.IEnumerable
1 [Srx.Application.StatCategories.Models.StatCategoryPreviewDto]]”。Microsoft.AspNetCore.Mvc.RazorPages.Internal.ExecutorFactory.CreateHandlerMethod(HandlerMethodDescriptor handlerDescriptor)
任何的想法 ?
解决方案
剃刀页面方法应返回实现IActionResult
的类型,以便正确执行操作结果。如果您需要返回 json,您可以使用JsonResult
并将操作返回类型更改为IActionResult
就足够了
public async Task<IActionResult> OnGet([FromQuery] GetStatCategoryPreviewQuery query)
{
var result = await Mediator.Send(query);
return new JsonResult(result);
}
推荐阅读
- elasticsearch - 将 filebeat 日志发送到 logstash 以使用 docker 元数据进行索引
- python - 任何人都可以帮助我了解这部分 python 代码的含义吗?
- facebook-graph-api - Facebook Graph API 无法从评论列表中获取 profile_pic
- mysql - 如何从xampp意外关闭中修复mysql
- python - 如何对excel文件中包含的文本进行聚类?
- performance - MIPS和执行时间有什么区别
- macos - MacOS - 我的已启动 plist 有什么问题?
- raspberry-pi - 谷歌助手注意:设备不支持远程控制
- python - trio.open_process 和 trio.run_process 给出属性错误
- appium - “页面应包含元素”不适用于 uiautomator2