私はこのデータ転送モデルを持っています:
[DataContract]
[Serializable]
class PersonDTO {
[DataMember(Name="id")]
public int id { get; set; }
[DataMember(Name="name")]
[Required]
public string name { get; set; }
}
このモデルを作成操作と更新操作の両方に使用できるようにしたいと思います。ここでの問題は、新しいPersonを作成するときに、そのIDがまだ存在しないことです(したがって、[必須]アノテーションがありません)。ただし、更新中、IDはすでに存在するため、必須フィールドである必要があります。
私のコントローラーには、次の操作があります。
public class PersonController {
[HttpPut]
public void UpdatePerson(PersonDTO person) {}
[HttpPost]
public void CreatePerson(PersonDTO person) {}
}
両方の操作に同じDTOを使用する方法はありますが、一方の操作にフィールド'id'を必須にするため、ModelStateは失敗しますか?チェックすることで手動で実行できることはわかっていますがperson.id == null
、存在する場合は自動ソリューションを探しています。