Frage

Nach vielen googeln, stackoverflowing (?) Und Blog-Lesen noch Ich kann nicht das Problem vollständig lösen. Hoffentlich ist dieser Community-Experten zur Rettung kommen kann!

Gegeben: Ein Unternehmen Klasse mit einem Feld ICollection (Ein Unternehmen kann viele Adressen haben). Jede Adresse hat ein paar einfachen String-Felder.

Kurzversion:

Ich möchte, dass die Benutzer in der Lage sein, eine beliebige Anzahl von Adressen an die Firma hinzuzufügen. Zuerst möchte ich einen Satz von Adresstextfelder zeigen und dann eine „Fügen Sie eine weitere Adresse“ klicken. Das Javascript ist kein Problem, eher der mvc Teil. Wenn unklar ist, sollte die Funktionalität similair sein: http://www.mdelrosso.com/sheepit/index.php?lng = en_GB & sec = demo3

Ich brauche die MVC EditorForModel () Funktion zu nutzen, die alle Konfigurationsanforderungen bedeutet in Editor Vorlagen gehen.

Status so weit:

  • Erstellt Ansichtsmodell für das Bearbeiten Unternehmensseite (CompanyViewModel)
  • hinzugefügt [UIHint ( "Adressen")], um den Bereich öffentliche ICollection Adressen {get; einstellen; }
  • Erstellt Adressen EditorTemplate

In den Adressen EditorTemplate, wenn eine neue Gesellschaft Hinzufügen das Modell übergeben ist Null (keine Überraschungen gibt). Wie kann ich den Editor für die zusätzliche Adresse erstellen? Ich habe versucht, mehrere Inkarnationen (mit Razor):

@Html.EditorFor(m => new Address());

aber aint der Lage, etwas zu produzieren, auch remote arbeiten. (Der genauen obige Zeile gibt den Fehler „Templates nur mit Feldzugriff verwendet werden kann, Zugriff auf Eigenschaften, eindimensionalen Array-Index oder Einzelparameter benutzerdefinierte Indexer Ausdrücke“).

Danke für alle Hinweise!

/ Victor

War es hilfreich?

Lösung

Dies ist ein Manko der aktuellen APIs. Eine Möglichkeit, es tun könnte, ist ein Kind Aktion zu haben, die für die Erzeugung des Einfügeformular

verantwortlich ist

In Ihrem Controller:

[ChildActionOnly]
public ActionResult AddAddress() {
    return View(new Address()); // pass an instance so view works
}

Fügen Sie eine neue Ansicht AddAddress.cshtml

@model Address
@Html.EditorForModel()

Dann in Ihrer Editor-Vorlage verwenden

@Html.Action("AddAddress")
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top