簡體   English   中英

使用外鍵發送發布請求-控制器為外來數據設置為null

[英]Send post request with foreign key - controller set null for foreign data

當我從Microsoft SQL Server發送到數據庫時,工作正常。 但是,當從郵遞員或角度發送郵寄請求時,外部數據始終為空。 我不知道哪里出了問題。 這是課程:

public class Korpa
{
    public int Id { get; set; }
    public int Id_korisnika { get; set; }
    public Korisnik Korisnik { get; set; }
    public int Id_Artikla { get; set; }
    public Artikal Artikal { get; set; }

}
public class Artikal
{
    public int Id { get; set; }
    [Required(ErrorMessage = "Unesite naziv grupe artikla!")]
    [StringLength(255)]
    public string Grupa { get; set; }
    [Required(ErrorMessage = "Unesite ime artikla!")]
    [StringLength(255)]
    public string Naziv_artikla { get; set; }
    public decimal? Nabavna_cena { get; set; }
    public decimal? Prodajna_cena { get; set; }
    public short? kolicina { get; set; }
    public string url_slike { get; set; }
    public string Specifikacija { get; set; }
}
public class Korisnik
{
    public int Id { get; set; }
    [Required(ErrorMessage = "Unesite vase ime!")]
    [StringLength(255)]
    public string Ime { get; set; }
    [Required(ErrorMessage = "Unesite vase prezime!")]
    [StringLength(255)]
    public string Prezime { get; set; }
    [Required(ErrorMessage = "Unesite korisnicko ime!")]
    [StringLength(255)]
    public string Username { get; set; }
    [Required(ErrorMessage = "Unesite sifru!")]
    [StringLength(255)]
    public string Sifra { get; set; }
    [Required(ErrorMessage = "Unesite email")]
    [StringLength(255)]
    public string Email { get; set; }
    [Required(ErrorMessage = "Unesite vasu adresu!")]
    [StringLength(255)]
    public string Adresa { get; set; }
    [Required(ErrorMessage = "Unesite vas broj telefona!")]
    [StringLength(255)]
    public string Broj_telefona { get; set; }
    public string jmbg { get; set; }
    public int Nivo { get; set; }
}

該cotroller:

    // GET: api/Korpas/5
    [ResponseType(typeof(Korpa))]
    public IHttpActionResult GetKorpa(int id)
    {
        var korpa = db.Korpa
            .Include(c => c.Korisnik)
            .Include(c => c.Artikal)
            .SingleOrDefault(c => c.Id == id);

        if (korpa == null)
        {
            return NotFound();
        }

        return Ok(korpa);
    }


    // POST: api/Korpas
    [ResponseType(typeof(Korpa))]
    public IHttpActionResult PostKorpa(Korpa korpa)
    {
        if (!ModelState.IsValid)
        {
            return BadRequest(ModelState);
        }

        db.Korpa.Add(korpa);
        db.SaveChanges();
        return CreatedAtRoute("DefaultApi", new { id = korpa.Id }, korpa);
    }

where為空,這是從發布請求中發送數據,不是,則從ms sql服務器發送sql查詢

您的POST方法收到一個Korpa模型,但是該實體沒有Artikal_Id屬性,您必須將該屬性添加到Korpa模型中,以便Web api可以執行序列化。

public class Korpa
{
    public int Id { get; set; }
    public int Id_korisnika { get; set; }
    public Korisnik Korisnik { get; set; }
    public int Id_Artikla { get; set; }
    public Artikal Artikal { get; set; }
    public int Artikal_Id {get; set;} // Add this property

}

解決了

public class Korpa
{
    public int Id { get; set; }
    public int Id_korisnika { get; set; }
    [ForeignKey("Id_korisnika")]
    public Korisnik Korisnik { get; set; }
    public int Id_Artikla { get; set; }
    [ForeignKey("Id_Artikla")]
    public Artikal Artikal { get; set; }
}

只需添加[ForeignKey(“外鍵名稱”)]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM