【发布时间】:2021-08-06 18:12:25
【问题描述】:
我正在开发 .Net 5 Web API,我正在使用 Swashbuckle,当我在我的模型上使用 [JsonIgnore] 时,它可以很好地渲染我的 JSON
型号:
public partial class ApplicationDocument : BaseModel
{
public int id { get; set; }
public int document_id { get; set; }
public int application_id { get; set; }
[NotMapped]
public string name { get; set; }
[NotMapped]
public string documentUrl { get; set; }
[JsonIgnore]
public virtual Application application { get; set; }
[JsonIgnore]
public virtual Document document { get; set; }
}
JSON
{
"applicationDocument": {
"dateCreated": "2021-05-17T13:08:08.934Z",
"dateModified": "2021-05-17T13:08:08.934Z",
"createdBy": "string",
"modifiedBy": "string",
"isActive": true,
"isDeleted": true,
"id": 0,
"document_id": 0,
"application_id": 0,
"name": "string",
"documentUrl": "string"
},
"fileDocument": "string"
}
问题是当我在控制器中使用 [FromForm] 属性时,[JsonIgnore] 对我不起作用,它呈现了每个字段,甚至是导航字段
控制器
[HttpPost]
[Route("[controller]/AddApplicationDocument")]
public BaseResponse AddApplicationDocument([FromForm] ApplicationDocumentViewModel ApplicationDocumentViewModel)
{
return _ApplicationDocument.AddApplicationDocument(ApplicationDocumentViewModel);
}
【问题讨论】:
-
没那么多,他想忽略它没有属性,但我已经在使用它,它不起作用
-
你能详细说明它为什么不适合你吗?其中一个答案是“使用 System.Text.Json.Serialization 命名空间中的 JsonIgnore。Newtonsoft.Json 中的 JsonIgnore 将不起作用。”
-
当它是一个普通的帖子时它工作正常,当它是一个 [FromForm] 帖子(多部分)表单时它不起作用 - 见附图
-
我认为你在使用
[FromForm]时需要[BindNever]属性。
标签: c# asp.net-core asp.net-web-api swagger .net-5