【发布时间】:2020-10-21 14:14:43
【问题描述】:
我有一个关于 C# Core 3.1 的项目,其中包含 React 和 Redux 模板以及用于 DB 的 EF Core。我需要从通过 REST API 控制器发送的 DTO 类中排除 Id。
我需要将 Id 用于与负载相关的类 vie EF Core,但我没有显示在 REST API 结果中:
{
"id": 1, -- DISABLE to show
"product": "TEST1"
}
C# 类:
public class ProductResDto
{
public int Id { get; set; } // DISABLE to show in REST API result
public string Product{ get; set; }
}
控制器:
// GET api/<ProductController>
[HttpPost]
public async Task<IActionResult> Post(ProductReqDto model)
{
try
{
var product = await _context.Products
.OrderBy(b => b.Name)
.Where(w => w.Name == model.Name)
.Select(c => new ProductResDto
{
Id = c.Id,
Product = c.Name
}).FirstAsync();
// Grades
product.Grades = ''; // LOAD ADD. INFO (use product.Id like FK in DB)
// Description
product.Descriptions = ''; // LOAD ADD. INFO (use product.Id like FK in DB)
// Files
product.Files = ''; // LOAD ADD. INFO (use product.Id like FK in DB)
// Parameters
product.Parameters = ''; // LOAD ADD. INFO (use product.Id like FK in DB)
return Ok(product);
}
catch (Exception e)
{
return NotFound();
}
}
是否有机会为 REST API 结果禁用此参数或使用 .Select() 加载到 await _context.Products 中
2 个对象:一个仅用于 ID,一个用于 ProductResDto
谢谢
【问题讨论】:
-
在将 Dto 发送到客户端之前设置它的值为零。
-
您需要从 JSON 响应中排除该属性吗?如果是这样,您可以使用 [JsonIgnore] 属性。
-
将 DTO 属性设置为零或空不是正确的解决方案。只有 JsonIgnor 位于 NewtonJson lib 中,但不是 wok
标签: c# json asp.net-core react-redux