1

最初にEFコードで作成されたモデルにシリアル化するAngular/Jsonクライアントから呼び出されるWepApiがあります。製品モデルを投稿し、post/save関数内にchangedateプロパティを設定したいと思います。ModelState.IsValid = falseを取得しましたが、efモデルプロパティを保持したい回避策はありますか

[Required]  
public DateTime ChangeDate { get; set; }

このエラートレイの投稿を取得する

{"$ id": "1"、 "メッセージ": "エラーが発生しました。"、 "ExceptionMessage":"タイプ'Entity.Product'のプロパティ'ChangeDate'が無効です。[必須]とマークされた値タイプのプロパティまた、必要に応じて認識されるようにするには、[DataMember(IsRequired = true)]でマークする必要があります。宣言型を[DataContract]で帰属させることを検討してください。

CODEモデル

[DataContract]
public class Product
{
    public Product()
    {
        ChangeDate = DateTime.Now;
    }

    //Serialization
    [DataMember]
    //DataAnnotations
    [DisplayName("ProductId")]
    [Description("ProductId")]
    public int ProductId { get; set; }

    //Serialization
    [DataMember(IsRequired = true)]
    //DataAnnotations
    [DisplayName("ChangeDate")]
    [Description("Date when product last was changed")]
    [Required]
    [DisplayFormat(DataFormatString = "{0:d}")]
    public DateTime ChangeDate { get; set; }

    //Serialization
    [DataMember]
    //DataAnnotations
    [DisplayName("Name")]
    [Description("Name")]
    [Required(ErrorMessage = " ")]
    [StringLength(100)]
    public String Name { get; set; } 


    public HttpResponseMessage Post(Entity.Product product,Boolean directSave = true)
    {
        if (ModelState.IsValid)
        {
            product.ChangeDate = DateTime.Now;
            _productRepository.Add(product);
            if (directSave)
                _context.Save();

            var response = Request.CreateResponse(HttpStatusCode.Created, product);
            response.Headers.Location = GetLocation(product.ProductId);
            return response;
        }

        return Request.CreateResponse(HttpStatusCode.BadRequest);
    }
4

0 に答える 0