Web Api核心2.0控制器方法输入参数验证

时间:2018-09-19 15:40:39

标签: c# asp.net-core asp.net-core-webapi

如何验证控制器方法的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; }
}

1 个答案:

答案 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;
    }          
}