2010-08-22 15 views
12

Ho la mia applicazione ASP.NET MVC 2 divisa in poche aree. Uno di questi è un'area predefinita nel catalogo principale e l'altra è un'area Account nel catalogo Aree. Ora, il problema è che ho bisogno di usare la stessa vista in controller da entrambe queste aree.Restituire una vista da un'area diversa

Se si trovavano nella stessa area, vorrei solo return View("ViewName"), ma cosa posso fare per restituire una vista dalla mia area predefinita in un controller dalla mia area Account? Qualche idea?

+0

Solo una nota, è possibile inserire questa vista nella cartella '~/Views/Shared' e solo chiamare' return View ("ViewName") 'da qualsiasi controller/area. – Omar

risposta

27

è possibile specificare la posizione relativa della vista:

return View("~/Views/YourArea/YourController/YourView.aspx"); 

Ma quando la vista è condiviso tra le aree più ti consiglierei di utilizzare la cartella ~/Views/Shared che serve meglio a questo scopo.

+0

Grazie a te Darin - ci proverò questo. –

4

Questa è una vecchia questione, ma ancora un problema rilevante in MVC credo, quindi ecco come ho risolto in modo secco che consente di cambiare facilmente il percorso del server, e hanno tutte le vostre azioni dipendenti aggiornano automaticamente:

public class FooController : Controller 
{ 

    private ActionResult FooView(string name, string extension = "cshtml") { 
     return View("~/Areas/Bar/Views/Foo/" + name + "." + extension); } 
    } 


    public ActionResult SomeAction(){ 

     return FooView("AreaSpecificViewName"); 

    } 

    public ActionResult SomeOtherAction(){ 

     return FooView("AnotherAreaSpecificViewName", "aspx"); 

    } 

} 

Questo è pulito, perché il valore predefinito è Razor (.cshtml) Visualizzare i file, ma può essere impostato in modo esplicito, fornendo il secondo parametro, come si vede in SomeOtherAction().

È semplice ma pratico, specialmente durante lo sviluppo quando il percorso della tua Area potrebbe cambiare o qualcosa del genere.

La speranza che aiuta qualcuno.

Problemi correlati