spo*_*ahn 3 c# validation logging json asp.net-core
如何ModelState以与ASP.NET Core相同的格式转换为JSON?
我知道我可以做BadRequest(ModelState),并且它将JSON返回给客户端。如何转换ModelState为JSON?更重要的是,我该如何使用它所使用的内容?
我的目标是将ModelStateas JSON记录在我们的日志“文件”中。
即 var blah = ModelState.ToJson()
如何将ModelState转换为JSON?
的SerializableError类提供此功能。
更重要的是,我该如何使用它所使用的内容?
using Microsoft.AspNetCore.Mvc;
using Newtonsoft.Json;
//get key(s) and error message(s) from the ModelState
var serializableModelState = new SerializableError(ModelState);
//convert to a string
var modelStateJson = JsonConvert.SerializeObject(serializableModelState);
//log it
logger.LogInformation("Bad Model State", modelStateJson);
Run Code Online (Sandbox Code Playgroud)
样品输出
{
"Name": ["The Name field is required."]
}
Run Code Online (Sandbox Code Playgroud)
通过浏览ASP.NET Core MVC源代码,我能够弄清楚这一点。有趣的部分源代码,从SerializableError类:
foreach (var keyModelStatePair in modelState)
{
var key = keyModelStatePair.Key;
var errors = keyModelStatePair.Value.Errors;
if (errors != null && errors.Count > 0)
{
var errorMessages = errors.Select(error =>
{
return string.IsNullOrEmpty(error.ErrorMessage) ?
Resources.SerializableError_DefaultError : error.ErrorMessage;
}).ToArray();
Add(key, errorMessages);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
883 次 |
| 最近记录: |