![](/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.