C# 在ASP.NET Core 3.0中发生错误请求时显示错误属性
我需要将导致C# 在ASP.NET Core 3.0中发生错误请求时显示错误属性,c#,asp.net,asp.net-core,asp.net-core-webapi,C#,Asp.net,Asp.net Core,Asp.net Core Webapi,我需要将导致错误请求的请求原因中出现错误的字段发送到客户端 例如,必须向用户发送字符串TravelDate,但它向我发送日期TravelDate,我想对客户端说,此文件TravelDate有问题,您必须发送字符串而不是日期 我怎样才能解决这个问题 if (!ModelState.IsValid) { return BadRequest(ModelState); } 这将向客户端发回发生的所有验证错误 在这种结构中:- { "type": "https://tools.ietf.org/
错误请求的请求原因中出现错误的字段发送到客户端
例如,必须向用户发送字符串TravelDate
,但它向我发送日期TravelDate
,我想对客户端说,此文件TravelDate
有问题,您必须发送字符串
而不是日期
我怎样才能解决这个问题
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
这将向客户端发回发生的所有验证错误
在这种结构中:-
{
"type": "https://tools.ietf.org/html/rfc7231#section-6.5.1",
"title": "One or more validation errors occurred.",
"status": 400,
"traceId": "|4f2a9400-4d321f2c7fffdb9f.",
"errors": {
"xxxx": [
"The value 'xxxsdsd' is not valid."
]
}
然后,您可以读取错误值并将其显示给用户。您可以在模型类中实现IValidatableObject
,如下例所示:
public class Test: IValidatableObject
{
public int Id { get; set; }
public string TravelDate { get; set; }
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
DateTime dateTime;
bool isDateTime = false;
isDateTime = DateTime.TryParse(TravelDate, out dateTime);
if (isDateTime)
{
yield return new ValidationResult($"TravelDate should be a string",new[] { "TravelDate" });
}
}
}
结果:
这不是工人。它向我显示这条消息:“Microsoft.AspNetCore.Mvc.ValidationProblemDetails”
当我发送请求并且有一个模型并且它有一个错误的请求时,它没有进入控制器hi@kia kia,我的回答对你有帮助吗?如果有,你能接受我的回答吗?参考:。好问题kia kia!漂亮的回答,丽娜!
[ApiController]
[Route("api/[controller]")]
public class ValuesController : Controller
{
[HttpPost]
public async Task<ActionResult<Test>> Post(Test machines)
{
//do your stuff...
}
}