2010-12-08 13 views
2

Ich habe 2 ViewModels (CreateVM, EditVM) mit Create.aspx und Edit.aspx. Beide teilen Vorlage CreateEditForm.ascx.So lösen Sie Passing 2 ViewModels nacheinander in ascx page

Jetzt Problem ist in CreateEditForm.ascx Vorlage Ich muss ein Modell definieren, die einmal von der oben genannten ViewModel sein wird. Angenommen, in CreateEditForm.ascx ist CreateVM definiert, und ich kann EditVM nicht über das Aktionsergebnis bearbeiten übergeben.

So lösen Sie dieses Problem, damit meine CreateEditForm.ascx beide ViewModels akzeptieren kann. Irgendein generischer Stil?

Ich hoffe, ihr versteht meine Frage.

Antwort

0

Es gibt mehrere mögliche Ansätze, die Sie ergreifen können:

  1. Wenn Ihr erstellen UI und Ihre bearbeiten UI sehr ähnlich sind (zB wenn sie nur durch die Anwesenheit eines ID-Feld unterscheiden), können Sie einfach ein Viewmodel und einige bedingte Logik, z if (Model.Id == null).
  2. Wenn Ihr erstellen UI und Ihre bearbeiten UI sehr ähnlich sindSie könnten auch Gebrauch zwei verschiedene Viewmodels, die eine gemeinsame Schnittstelle implementieren und eine Teilansicht erstellen, die nur die Felder gemeinsam macht, z.B.

    public class SomethingEditViewModel : ISomethingViewModel { }

    public class SomethingCreateViewModel : ISomethingViewModel { }

    public interface ISomethingViewModel { // define the common fields here }

  3. Wenn erstellen und bearbeiten UI sind Art und Weise unterschiedliche, verwenden Sie nur 2 separate Viewmodels und damit zwei separate Ansichten.

+0

Wie? . Brauchen Sie ein Beispiel bitte – Pirzada

+0

Was ist anders zwischen erstellen und bearbeiten? –