MVC 3 - Dropdown-Liste Gerüstbau

8

Ich spiele mit dem Gerüst in Asp.net mvc

Ich habe eine Eigenschaft in meinem Ansichtsmodell für Länder

%Vor%

Wenn ich jedoch eine Ansicht erstelle und das Ansichtsmodell spezifiziere, wird keine Dropdownliste erstellt, wie ich es erwartet habe. Tatsächlich wird es komplett ignoriert.

Ich habe das Projekt vor der Durchführung erstellt

Ich habe auch versucht, eine Eigenschaft wie folgt hinzuzufügen

%Vor%

Wie dieser Artikel andeutete, gibt es eine Konvention bei der Arbeit

Ссылка

Ich verwende die Option Ansicht hinzufügen , wenn Sie mit der rechten Maustaste auf eine Controller-Aktionsmethode

klicken

Irgendwelche Ideen was ist falsch?

    
ChrisCa 17.04.2011, 10:36
quelle

3 Antworten

5

In meinem aktuellen Projekt war ich mit diesem Problem konfrontiert und konnte keine schnelle Möglichkeit finden, die Dropdown-Liste einer Eins-Viele-Beziehung innerhalb einer meiner Entitäten zu strukturieren.

Was ich getan habe, war wie folgt:

1- Erstellen Sie den normalen AddView = & gt; Create Weg.

2- Wenn ich eine ID-Eigenschaft in meiner Modellklasse hätte, würde die default; t-Vorlage so etwas erzeugen, um diese Eigenschaft in meiner Ansicht darzustellen:

%Vor%

3- Jetzt muss ich diese Standardvorlage durch eine funktionierende ersetzen, also schrieb ich diesen Code in die CREATE Methode:

%Vor%

Dadurch wird die Cities-Tabelle abgerufen und eine Auswahlliste erstellt, die ich an meine Ansicht übergeben und damit arbeiten kann, um die DrobDown mit ihren Elementen zu versorgen.

4- Ersetzen Sie den Standardcode in meiner Ansicht durch einen wie den folgenden:

%Vor%

Der Grund, warum ich ViewData["CityList"] anstelle von ViewBag.CityList verwendet habe, ist, dass dieser funktioniert, aber der andere nicht.

5- Jetzt funktioniert meine Ansicht und findet die City -Daten genauso wie ich es erwartet hatte, und die Verwendung des gleichen Modells in meiner Edit -Ansicht führte auch zu einer funktionierenden.

Probieren Sie es aus und lassen Sie mich wissen, was passiert ist, Danke.

    
Mohammed ElSayed 17.04.2011 11:27
quelle
4

Ich habe festgestellt, dass der Create-generierte Code beim Erstellen eines neuen Controllers anders ist, als wenn Sie mit der rechten Maustaste in einen vorhandenen Controller klicken und "Add View" sagen und das Gerüst "Create" auswählen Vorlage. Im ersten Fall, vorausgesetzt, Sie haben die richtigen Eigenschaften für die Kindklasse

%Vor%

Dann wird dieser Fall (Hinzufügen von Controller mit MVC Scaffolding lesen / schreiben und entsprechende Model-Klasse) generiert eine @ Html.DropDownList für die übergeordnete Beziehung, während Rechtsklick innerhalb der Controller-Create-Methode nicht das Dropdown-Gerüst Gerüst aber wird Erstellen Sie stattdessen einen @ Html.EditorFor für die Beziehung.

Wenn Sie möchten, dass der Gerüstcode das Dropdown-Menü generiert, können Sie Ihren Controller löschen und neu erstellen, falls möglich, andernfalls fügen Sie den entsprechenden Code manuell hinzu.

    
chris 19.09.2012 16:24
quelle
1

Um die Möglichkeit zu haben, ein Land mit einem Dropdown-Menü auszuwählen, sollte die Eigenschaft in Ihrem Modell lauten:

public Country Country{ get; set; } Die von EF verwendete Navigationseigenschaft bezieht die Datenbank nicht ein

mit

public Country CountryId{ get; set; }   Erstellen Sie den Fremdschlüssel in der Personentabelle

Jede Instanz / jeder Datensatz einer Person ist einem Land zugeordnet: Die Beziehung wird mit der Navigationseigenschaft über Code und mit der CountryID für die Datenbank definiert. Die Gerüst-Vorlage generiert dann die Methoden und Ansichten zum Bearbeiten / Erstellen mit:

%Vor%

Hier ist ein ähnliches Szenario.

>     
Giorgio Minardi 05.08.2011 21:33
quelle