gpt4 book ai didi

c# - Web Api core 2.0 Controller方法入参校验

转载 作者:行者123 更新时间:2023-11-30 22:59:11 25 4
gpt4 key购买 nike

如何验证 Controller 方法的 JObject 输入参数?我想知道是否有任何框架支持的功能可以轻松验证?

现在我正在针对 null 进行验证,如果它不为 null,则 JObject 被解析并填充 DTO 对象并完成业务流程。

我的 Controller 方法如下所示:

public async Task<IActionResult> Login([FromBody]JObject jObject)
{
try
{
if (jObject != null)
{
TokenDTO SiBagToken = await _account.Login(jObject);

return SuccessStatusCode;

}
else
{
return NoContentStatusCode;
}

}
catch(Exception ex)
{

return errorstatuscode;

}

}

这是 DTO 对象的样子:

public class AccountDTO
{
public string UserName { get; set; }
public string Password { get; set; }
public string oldPassword { get; set; }
}

最佳答案

通过将所需的对象模型作为操作的参数,让框架解析所需的对象模型。

验证属性可以应用于DTO

例如

public class AccountDTO {
[Required]
[StringLength(50, ErrorMessage = "Your {0} must be contain between {2} and {1} characters.", MinimumLength = 5)]
public string UserName { get; set; }
[Required]
[DataType(DataType.Password)]
public string Password { get; set; }

public string oldPassword { get; set; }
}

并在操作中使用 Controller 的 ModelState 进行验证。

public async Task<IActionResult> Login([FromBody]AccountDTO model) {
try {
if (ModelState.IsValid) {
TokenDTO SiBagToken = await _account.Login(model);
return Ok();
}
return BadRequest(ModelState);
} catch(Exception ex) {
return errorstatuscode;
}
}

关于c# - Web Api core 2.0 Controller方法入参校验,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52409610/

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