2016-04-09 34 views
1

Bir Edit ekranım var ve bir hata alıyorum. Kullanıcı nesneyi düzenleyebilir ancak Yabancı Anahtar null olur. Ve bu büyük bir soruna neden oluyor. Neden Yabancı Anahtarı almıyor? İşte benim kodum ...MVC'de, Edit işlevi yabancı anahtarı özlüyor

İlk işlev mükemmel, ancak HttpPost olanı, bir Yabancı Anahtar olan TcmbCurrencyId değerini kaybeder. Bunu nasıl düzeltebilirim?

public ActionResult Edit(int? Id) 
    { 
     if (Id == null) 
     { 
      return new HttpStatusCodeResult(HttpStatusCode.BadRequest); 
     } 

     TmcbExchangeRate rate = db.TmcbExchangeRate.Where(x=>x.Id==Id).First(); 

     if (rate == null) 
     { 
      return HttpNotFound(); 
     } 

     return View(rate); 
    } 

    [HttpPost] 
    [ValidateAntiForgeryToken] 
    public ActionResult Edit([Bind(Include = "Id,TcmbCurrencyId,RateDate,ForexBuying,ForexSelling,BanknoteBuying,BanknoteSelling")] TmcbExchangeRate tmcbExchangeRate) 
    { 
     if (ModelState.IsValid) 
     { 
      db.Entry(tmcbExchangeRate).State = EntityState.Modified; 
      db.SaveChanges(); 
      return RedirectToAction("Index"); 
     } 
     return View(tmcbExchangeRate); 
    } 
+1

daki form içinde bu eklensin mi? @ Html.HiddenFor (model => model.TcmbCurrencyId) '? Aksi takdirde gönderilecek olan kontrolöre gönderilmez. Yalnızca formda kullanılan değerler, teslim edilen kontrolöre geri gönderilir. – Nkosi

cevap

1

sizin bakış senin formda istenen özelliği TcmbCurrencyId dahil değildir göndermek yayınlanmasının mümkündür. Aksi takdirde gönderilecek olan kontrolöre gönderilmez. Yalnızca formda kullanılan değerler, teslim edilen kontrolöre gönderilir. Orijinal yayındaki Görünümü eklemediyseniz, bu bir varsayımdır.

sen (gizli veya başka bir şekilde) girdi olarak görünümünde `TcmbCurrencyId` dahil ediyor musunuz Görünüm

@Html.HiddenFor(model => model.TcmbCurrencyId)