工作的MVC版本是
public class StatCategoriesController : BaseController
{
[HttpGet]
public async Task<ActionResult<IEnumerable<StatCategoryPreviewDto>>> GetStatCategoryPreview([FromQuery] GetStatCategoryPreviewQuery query)
{
return Ok(await Mediator.Send(query));
}
}
剃刀版本是
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.IEnumerable
1Srx.Application.StatCategories.Models.StatCategoryPreviewDto]'.Microsoft.AspNetCore.Mvc.RazorPages.Internal.ExecutorFactory.CreateHandlerMethod(HandlerMethodDescriptor handlerDescriptor)
有什么想法吗?
发布于 2019-09-21 04:58:14
剃刀页面方法应该返回实现IActionResult
的类型,以便正确执行操作结果。如果需要返回IActionResult
,可以使用JsonResult
,将操作返回类型更改为json就足够了
public async Task<IActionResult> OnGet([FromQuery] GetStatCategoryPreviewQuery query)
{
var result = await Mediator.Send(query);
return new JsonResult(result);
}
https://stackoverflow.com/questions/58034514
复制相似问题