首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何验证CQRS查询

如何验证CQRS查询
EN

Stack Overflow用户
提问于 2021-07-19 15:38:30
回答 1查看 150关注 0票数 0

我正在开发一个APS.NET Core应用程序,我有两个问题。

当executing?

  • ​How失败时,
  1. 如何验证(使用FluentValidation) CQRS查询,然后才能将用户重定向到错误页面(例如404页)?

第一个问题描述

在没有CQRS的情况下,我使用下面的方法按ID获取标记,如果没有找到标记,它只是返回:

代码语言:javascript
运行
复制
public async Task<IActionResult> Edit(int id)
{
    var tag = await _unitOfWork.Tags.GetAsync(id);
    if (tag is null)
        return NotFound();

    return View(tag);
}

对于CQRS,我使用以下代码:

代码语言:javascript
运行
复制
// CQRS Query
public class GetTagByIdQuery : IRequest<Tag>
{
    public int Id { get; set; }

    public class GetTagByIdQueryHandler : IRequestHandler<GetTagByIdQuery, Tag>
    {
        private readonly IUnitOfWork _unitOfWork;

        public GetTagByIdQueryHandler(IUnitOfWork unitOfWork)
        {
            _unitOfWork = unitOfWork;
        }

        public async Task<Tag> Handle(GetTagByIdQuery request, CancellationToken cancellationToken)
        {
            return await _unitOfWork.Tags.GetAsync(request.Id);
        }
    }
}


// Action method
public async Task<IActionResult> Edit(int id)
{
    return View(await _mediator.Send(new GetTagByIdQuery { Id = id }));
}

如何确保给定的ID是有效的?

第二个问题描述

例如:

如果用户请求带有无效标记ID的标记:

https://localhost:44343/admin/tags/edit/80

我想将用户重定向到404错误页面。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-07-20 05:41:40

对于这两个问题,当标记ID无效时,查询结果将为null,因此我们可以这样处理它:

代码语言:javascript
运行
复制
public async Task<IActionResult> Edit(int id)
{
    var query = new GetTagByIdQuery { Id = id };
    var result = await _mediator.Send(query);

    return result is not null ? View(result) : (IActionResult)NotFound();
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68443314

复制
相关文章

相似问题

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