![](/img/trans.png)
[英]How to send forms' data to ASP.NET Core Web API action decorated with [FromForm] in Angular?
[英]Data decorated with [DataMember] is not being validated during deserialization in Asp.Net Core Web API
我有一个 DTO 类
[DataContract]
public class MyDTO
{
[DataMember(IsRequired)]
public string MyProperty { get; set; }
}
当我在没有MyProperty
情况下发出POST
请求时,我没有得到任何异常。
编辑:
我的控制器看起来像:
[HttpPost]
public async Task<IActionResult> Add([FromForm] MyDTO newDTO)
{
if (!this.ModelState.IsValid)
{
var errors = this.GetModelStateErrors();
return this.BadRequest();
}
try
{
var newDo = this.mapper.Map<MYDTO, MyDO>(newDto);
await this.dataManager.InsertAsync(this.myDbContext, newDo);
return this.StatusCode(201);
}
catch (ValidationException e)
{
return this.BadRequest(e.Message);
}
catch (Exception e)
{
return this.StatusCode(500, "Unspecified error occurred while processing request.");
}
}
我也在 Db 上下文中对 DO 进行验证。 我想验证 DTO。
public class MyDTO
{
[System.ComponentModel.DataAnnotations.Required]
public string MyProperty { get; set; }
}
由于我遇到了同样的“问题”,让我解释一下我的理解:
DataContract
和DataMember
位于System.Runtime.Serialization命名空间内。
这意味着它们与序列化行为有关。它们不打算用于模型验证。
IsRequired
信息向序列化程序指示该字段是否必须出现在序列化消息中。
如果您需要验证是否必须验证存储在字段中的数据,则必须使用System.ComponentModel 中的属性。 数据注释
此命名空间中的属性用于数据验证
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.