Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Web Api core 2.0控制器方法输入参数验证_C#_Asp.net Core_Asp.net Core Webapi - Fatal编程技术网

C# Web Api core 2.0控制器方法输入参数验证

C# Web Api core 2.0控制器方法输入参数验证,c#,asp.net-core,asp.net-core-webapi,C#,Asp.net Core,Asp.net Core Webapi,如何验证控制器方法的JObject输入参数?我想知道是否有框架支持的功能可以轻松验证 现在,我正在针对null进行验证,如果它不是null,则解析并填充DTO对象并完成业务流程 我的控制器方法如下所示: public async Task<IActionResult> Login([FromBody]JObject jObject) { try { if (jObject != null) {

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

现在,我正在针对null进行验证,如果它不是null,则解析并填充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 {
    [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;
    }          
}
公共异步任务登录([FromBody]AccountDTO模型){
试一试{
如果(ModelState.IsValid){
TokenDTO SiBagToken=wait_account.Login(模型);
返回Ok();
}
返回请求(ModelState);
}捕获(例外情况除外){
返回错误状态码;
}          
}

从2.1版开始,使用[ApiController]注释时,无需检查手册是否有效:@ChristophLütjen是,如果您使用的是
[ApiController]
,但默认情况下不需要。您提供的信息仍然准确。谢谢您的回复。因此,如果我将输入参数从JObject更改为DTO对象,Angular UI会理解吗?@Prasad DTO类用于服务器端。客户端发送的JSON将由框架解析并传递给控制器操作。
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;
    }          
}