首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将MediatR从MVC项目移动到Razor Pages。无法使基本语法正常工作

将MediatR从MVC项目移动到Razor Pages。无法使基本语法正常工作
EN

Stack Overflow用户
提问于 2019-09-21 04:02:05
回答 1查看 658关注 0票数 2

工作的MVC版本是

代码语言:javascript
运行
复制
 public class StatCategoriesController : BaseController
{
    [HttpGet]
    public async Task<ActionResult<IEnumerable<StatCategoryPreviewDto>>> GetStatCategoryPreview([FromQuery] GetStatCategoryPreviewQuery query)
    {
        return Ok(await Mediator.Send(query));
    }    
}

剃刀版本是

代码语言:javascript
运行
复制
  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 verion不会返回JSON。相反,它返回..

nvalidOperationException:不支持的处理程序方法返回类型'System.Threading.Tasks.Task1[System.Collections.Generic.IEnumerable1Srx.Application.StatCategories.Models.StatCategoryPreviewDto]'.Microsoft.AspNetCore.Mvc.RazorPages.Internal.ExecutorFactory.CreateHandlerMethod(HandlerMethodDescriptor handlerDescriptor)

有什么想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-09-21 04:58:14

剃刀页面方法应该返回实现IActionResult的类型,以便正确执行操作结果。如果需要返回IActionResult,可以使用JsonResult,将操作返回类型更改为json就足够了

代码语言:javascript
运行
复制
public async Task<IActionResult> OnGet([FromQuery] GetStatCategoryPreviewQuery query)
{
    var result = await Mediator.Send(query);
    return new JsonResult(result);
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58034514

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档