2010-11-01 6 views
0

J'ai une page maître qui repose sur un modèle spécifique provenant de mes pages. Ainsi, le code de fin pour chaque essentiellement ViewResult finit par quelque chose comme çaréutilisation vue redondante code modèle mvc

public ActionResult Details(long store_id) 
{ 
    var store = getStore(); 

    var model = new ClientModel<StoreModel>(store) 
     { 
      UserNotifications = new UserNotificationModel(this.CurrentUser) 
     }; 

    return View(model); 
} 

Chacun de mes contrôleurs dérive d'un BaseController, alors que je cherchais à y mettre ce code redondant, mais je ne suis pas vraiment sûr le meilleur approche à prendre.

La structure générique pour mon ClientModel est ce ...

public class ClientModel<T> : ClientModel {} 

public class ClientModel {} 

Précision Le StoreModel est générique et beaucoup d'autres actions utilisent un modèle de vue différent. Je voulais juste montrer en fonction de ce à quoi il ressemble quand il est impulsé.

+0

utiliser l'héritage avec prudence ici. Vous pourriez vous peindre dans un coin. :) – bzlm

+0

l'héritage est nécessaire pour la dynamique MasterPage/Content Page. Mes pages maîtres s'appuient sur ClientModel, et mes pages de vue peuvent prendre peuvent optionnel PageModel, le . La solution fonctionne bien. –

Répondre

1
protected ViewResult ClientModelView<T>(T model) 
{ 
    var clientModel = new ClientModel<T>(model) 
     { 
      UserNotifications = new UserNotificationModel(CurrentUser) 
     }; 

    return this.View(clientModel); 
} 
+0

c'est la solution à mon problème, pourquoi la downvote –

0

Découvrez mes similaires question.

Fondamentalement, vous créez un contrôleur de base:

public class BaseController : Controller 
{ 
    public Model GetModel() {} 
} 

Ensuite, tous vos contrôleurs héritent de la base:

public class NewController : BaseController 
{ 

    public ActionResult Details(long store_id) 
    { 

     var model = GetModel(); 

     return View(model); 
    } 

} 
+0

cela se concentre sur le modèle, alors que je suis en train de faire abstraction de la vue, et permettre à tout type de modèle –

Questions connexes