2016-04-09 2 views
1

Ich habe einen Bearbeitungsbildschirm und ich bekomme einen Fehler. Der Benutzer kann das Objekt bearbeiten, aber Fremdschlüssel wird null. Und das verursacht ein großes Problem. Warum bekommt es nicht den Fremdschlüssel? Hier ist mein Code ...In MVC, Edit-Funktion fehlt der Fremdschlüssel

Erste Funktion ist perfekt, aber die mit HttpPost verliert TcmbCurrencyId Wert, der ein Fremdschlüssel ist. Wie kann ich das beheben?

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

Sind auch Sie 'TcmbCurrencyId' in der Ansicht als einen Eingang (versteckt oder auf andere Weise)? '@ Html.HiddenFor (Modell => Modell.TcmbCurrencyId)'? Wenn nicht, wird es beim Senden nicht an den Controller gesendet. Nur Werte, die im Formular verwendet werden, werden beim Senden an den Controller zurückgegeben. – Nkosi

Antwort

1

Es ist möglich, dass Sie die gewünschte Eigenschaft TcmbCurrencyId in Ihrer Form Ihrer Ansicht ohne auf einreichen gebucht werden. Wenn nicht, wird es beim Senden nicht an den Controller gesendet. Nur Werte, die im Formular verwendet werden, werden beim Senden an den Controller gesendet. Wenn Sie die Ansicht nicht in den ursprünglichen Post eingefügt haben, ist dies eine Annahme.

Fügen Sie diese in Ihrer Form in der Ansicht

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