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