如何验证控制器方法的JObject
输入参数?我想知道是否有任何框架支持的功能可以轻松验证?
现在我要针对null进行验证,如果不为null,则将解析JObject
并填充DTO对象并完成业务流程。
我的控制器方法如下:
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; }
}
答案 0 :(得分:2)
让框架通过将其作为动作的参数来解析所需的对象模型。
验证属性可以应用于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; }
}
并使用控制器的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;
}
}