2017-12-30 45 views
2

Ich weiß nicht, wie ich zusammenfassen soll, was ich im Titel richtig machen will! Im Grunde habe ich einen Controller mit EF6 erstellt und ein Fremdschlüssel der Client-Tabelle ist MJTopicsID, der mit der MJTopics-Tabelle eine Tabelle von 26 Themen verknüpft. In der Ansicht Hinzufügen und Bearbeiten möchte ich, dass die MJTopicsID ein Dropdown-Menü mit allen verfügbaren Themen ist, aber wenn Sie sie auswählen und auf klicken, um einen Eintrag hinzuzufügen oder zu bearbeiten, fügt er ihn der Client-Tabelle als MJTopicsID-Fremdschlüsselnummer hinzu. Wie gehe ich vor, damit ich es auf alle meine Ansichten anwenden kann..NET Verschiedene Datenbankvariablen anzeigen, aber als ID speichern?

Dies ist das Dropdown-Menü, das ich in der Bearbeitungsansicht erstellt habe, aber es zeigt nur Nummern 1-26 und wenn ich es in die Themenvariable ändere, weiß es es nicht, offensichtlich ist es nicht im offenen Modell, danke!

+0

Vielleicht haben Sie es eine Liste von einfachen Prinzipien wie Strings oder Ints anstelle von SelectListItem gegeben. Siehe https://docs.microsoft.com/en-us/aspnet/mvc/overview/older-versions/working-with-the-dropdownlist-box-and-jquery/using-the-dropdownlist-helper-with-aspnet -mvc? –

+0

Ich verstehe nicht, was ist deine Frage! Suchen Sie nach der richtigen Methode zum Anzeigen der ausgewählten Fremdschlüssel oder nach dem Back-End-Code, um die Elemente miteinander zu verknüpfen? –

+0

Wenn Sie ein Dropdown-Menü ausfüllen, können Sie für jedes Element in der Liste einen anderen Text und einen anderen Wert festlegen. So können Sie einfach einen Text für die Themen anzeigen und den entsprechenden numerischen Wert speichern. Es geht darum, die richtige Bindung zu machen. – derloopkat

Antwort

3

Wenn ich richtig verstanden habe, dann möchten Sie einen lesbaren Wert anzeigen und einige db spezifischen Wert wie Fremdschlüssel-ID in diesem Fall speichern.

Nach Ansicht für Hilfsmethode „Dropdownlist“ können Sie zweite Parameter vom Typ IEnumerable-Typ als eine Liste von Optionen wie folgt geben:

View: 


@Html.DropDownList("MJTopicsID", 
    (List<SelectListItem>)@ViewBag.MJTopics, 
     htmlAttributes: new { @class = "form-control" }) 



Action: 


public ActionResult Index() 
    { 
     ViewBag.MJTopics = new List<SelectListItem>() { 
      new SelectListItem(){Text = "Topic1", Value ="1" }, 
      new SelectListItem(){Text = "Topic2", Value ="2" } 
     }; 
     return View(); 
    } 

SelectListItem hat zwei Eigenschaften, die Sie mit Ihren Modellen abbilden können. Sie können Ihr Modell auch mit "Text" als Wert zum Anzeigen und "Wert" als Wert verwenden.

Let „Themen“ ist die Liste Modell für Themen dann können Sie es als

topics.Select(
      x=> new SelectListItem() 
       { 
       Text = x.Id, 
       value =x.Desc 
       }) 

Dies ist der einzige Weg, es zu tun schreiben.

Ich hoffe, es wird Ihr Problem lösen.

0

Ich wollte eine Antwort hinzufügen, wenn jemand EF6 neu ist und versucht, das Gleiche zu tun.

In der Steuerung für die Action Sie versuchen, dies zu tun, so ist es in meinem Fall schaffen eine viewbag Variable erstellen war diese Mine:

ViewBag.MJTopicsID = new SelectList(db.MJTopicss, "ID", "ID"); 

ich es geändert:

ViewBag.MJTopicsID = new SelectList(db.MJTopicss, "ID", "topicalTF"); 

Die topicTF ist die Variable für die verfügbaren Themen und das zeigte alle Themen aber würde es als ID speichern, hoffe das hilft!

Verwandte Themen