gpt4 book ai didi

c# - 如何避免在每次回发时调用 ModelState.IsValid?

转载 作者:行者123 更新时间:2023-11-30 20:16:30 26 4
gpt4 key购买 nike

我几乎总是想在回发时检查 ModelSate.IsValid 是否被调用。而且必须在每次回发开始时进行检查违反了 DRY 原则,有没有办法让它自动检查?

例子:

[HttpPost("RegisterUser")]
[AllowAnonymous]
public async Task<IActionResult> RegisterUser([FromBody] UserRegisterViewModel vmodel)
{
if(!ModelState.IsValid) // This code is repeated at every postback
return ModelInvalidAction(); // Is there a way to avoid having to write it down?

// do other things

return StatusCode(201);
}

最佳答案

框架提供了一个抽象的ActionFilterAttribute,您可以将其子类化。

您可以使用操作过滤器来自动验证模型状态并在状态无效时返回任何错误:

using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.Filters;

public class ValidateModelAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext context)
{
if (!context.ModelState.IsValid)
{
context.Result = new BadRequestObjectResult(context.ModelState);
}
}
}

然后您可以将它用于单个操作或全局注册

引用 Asp.Net Core : Action Filters

关于c# - 如何避免在每次回发时调用 ModelState.IsValid?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48832195/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com