2010-12-08 11 views
2

J'ai 2 ViewModels (CreateVM, EditVM) avec Create.aspx et Edit.aspx. Les deux partagent un modèle appelé CreateEditForm.ascx.Comment résoudre Passing 2 ViewModels un à la fois dans la page ascx

Maintenant le problème est dans le modèle CreateEditForm.ascx j'ai besoin de définir le modèle qui sera une fois du ViewModel ci-dessus. Supposons que CreateEditForm.ascx a CreateVM défini que je ne peux pas transmettre EditVM à partir de l'Edit ActionResult.

Comment résoudre ce problème afin que mon CreateEditForm.ascx puisse accepter les deux ViewModels. Un style générique? Je souhaite que vous compreniez ma question.

Répondre

0

Il y a plusieurs approches possibles que vous pouvez prendre:

  1. Si votre créer l'interface utilisateur et votre interface d'édition sont très similaires (par exemple, si elles ne diffèrent par la présence d'un champ d'ID), vous pouvez utiliser simplement one viewmodel et faire une certaine logique conditionnelle, par exemple if (Model.Id == null).
  2. Si votre interface utilisateur et créer votre interface utilisateur d'édition sont très similairesvous pouvez aussi utiliser deux viewmodels différentes qui mettent en œuvre une interface commune et créer une vue partielle qui rend juste les champs en commun, par exemple

    public class SomethingEditViewModel : ISomethingViewModel { }

    public class SomethingCreateViewModel : ISomethingViewModel { }

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

  3. Si votre création et votre interface utilisateur modifier de manière différente sont, il suffit d'utiliser 2 viewmodels séparés et donc deux vues distinctes.

+0

Comment? . Besoin d'un exemple s'il vous plaît – Pirzada

+0

Qu'est-ce qui est différent entre créer et éditer? –