3

在这里,我想从 in 返回custom action filter而不执行controller action methodin asp.net core WEB API

以下是我对样品的要求code

public override async Task OnActionExecutionAsync(ActionExecutingContext context, ActionExecutionDelegate next)
{
    bool valid=SomeMethod();
    if(valid)
        //executes controller action
    else
        //returns without executing controller action with the custom message (if possible)
}

我已经搜索并找到了一些相关的问题和答案,但对我没有任何帮助。

找到了这个await base.OnActionExecutionAsync(context, next);,但它跳过了剩余的逻辑filters并直接执行controller action所以不适用于我的场景。

4

2 回答 2

6
public override async Task OnActionExecutionAsync(ActionExecutingContext context, ActionExecutionDelegate next)
{
    bool valid=SomeMethod();
    if(valid)
         await next();
    else
        context.Result = new BadRequestObjectResult("Invalid!");
}
于 2019-03-01T12:18:54.033 回答
1

您可以通过将 context.Result 设置为IActionResult. 下面的示例仅将错误作为纯文本返回。如果你想要一些花哨的错误信息,你可以View()改用。

public override async Task OnActionExecutionAsync(ActionExecutingContext context, ActionExecutionDelegate next)
    {
        bool valid=SomeMethod();
        if(valid)
             next();
        else
            context.Result = Content("Failed to validate")
    }
于 2019-02-26T15:23:39.447 回答