私は ASP.NET Web API で Web API を作成しており、次のビュー モデルを利用しています。特定のプロパティに 2 つの検証属性 ([Required] と [StringLength(10)]) がある場合、データ バインディングに問題があるようです。
JSON 値をクライアントから次の形式のコントローラー アクションにポストする場合:
// POST API/リスト
public void Post([FromBody] TaskViewModel taskVM)
私は次のことを観察します。
- 複数の属性の 1 つを削除すると、すべてが正常にバインドされます。
- 複数の属性を残すと、クライアントは 500 内部サーバー エラーを受け取り、Post メソッドの本体に到達しません。
なぜこれが起こるのですか?乾杯
public class TaskViewModel
{
//Default Constructor
public TaskViewModel() { }
public static TaskViewModel MakeTaskViewModel(Task task)
{
return new TaskViewModel(task);
}
//Constructor
private TaskViewModel(Task task)
{
this.TaskId = task.TaskID;
this.Description = task.Description;
this.StartDate = task.StartDate;
this.Status = task.Status;
this.ListID = task.ListID;
}
public Guid TaskId { get; set; }
[Required]
[StringLength(10)]
public string Description { get; set; }
[Required]
[DataType(DataType.DateTime)]
public System.DateTime StartDate { get; set; }
[Required]
public string Status { get; set; }
public System.Guid ListID { get; set; }
}