Bonjour,

J'ai une application web ASP MVC 4 et on souhaiterais la rendre modulable via d'autres projets ASP MVC4. Concrètement il s'agit d'avoir un noyau commun pour tous nos clients et de pouvoir ajouter quelques spécificités pour certains d'entre eux par le biais de modules pluggable (un par client).

La finalité est qu'au sein d'écrans existants, on puisse ajouter du contenu dans la page.

Pour ce faire, j'utilise MEF pour faire de la composition de Controllers.

Je me retrouve donc avec deux Controllers de la façon suivante :

- Main Application
-- Controllers
--- TestController

Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
public virtual ActionResult Index()
{
    return View();
}

- Module
-- Controllers
--- TestController : hérite de MainApplication.Controllers.TestController
Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
 
public override ActionResult Index()
{
    // Je veux continuer à afficher la page de base
    ViewResult baseActionResult = (ViewResult)base.Index();
    baseActionResult.ExecuteResult(this.ControllerContext);
 
    // Tout en ajoutant du nouveau contenu
    var test = new TagBuilder("h1");
    test.SetInnerText("Nouveau contenu propre au module");
    return Content(test.ToString());
}

Lorsque mon module est présent, je veux pouvoir continuer d'afficher la page originale (donc l'Index de ma MainApplication) tout en lui ajoutant un contenu bidon (ici mon TagBuilder).
Evidemment, le code que j'ai mis fonctionne en partie mais le nouveau contenu n'est pas vraiment "au sein de ma page" mais "en dessous".

Comment feriez-vous pour implémenter ce type de fonctionnalité ?

Merci et désolé si ma demande n'est pas forcément très claire...

Laurent