2010-08-22 13 views
12

Mam aplikacji ASP.NET MVC 2 podzielony na kilka obszarów. Jednym z nich jest domyślny obszar w głównym katalogu, a drugi to obszar Account w katalogu Obszary. Problem polega na tym, że muszę używać tego samego widoku w kontrolerach z obu tych obszarów.Powrót widok z innego obszaru

Gdyby znajdowały się w tym samym obszarze, po prostu miałbym return View("ViewName"), ale co mogę zrobić, aby przywrócić widok z mojego domyślnego obszaru w kontrolerze z mojego obszaru Account? Jakieś pomysły?

+0

Po prostu zapamiętaj, możesz umieścić ten widok w folderze '~/Views/Shared' i po prostu wywołać' return View ("ViewName") 'z dowolnego kontrolera/obszaru. – Omar

Odpowiedz

27

Można określić względną lokalizację Widok:

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

Ale gdy widok jest dzielony pomiędzy wielu obszarach polecam korzystanie z folderu ~/Views/Shared która serwuje lepiej ten cel.

+0

Dziękuję Darin - spróbuję tego. –

4

To stara sprawa, ale nadal istotnym problemem w MVC Myślę, więc tutaj jest to, jak rozwiązać go w suchym sposób, który pozwala łatwo zmienić ścieżkę serwera i mieć wszystkie swoje działania na utrzymaniu aktualizować automatycznie:

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"); 

    } 

} 

To jest fajne, ponieważ domyślnie brzmi Razor (.cshtml) Wyświetl pliki, ale można je ustawić jawnie, dostarczając drugi parametr, jak widać w SomeOtherAction().

Jest prosty, ale poręczny, szczególnie w fazie rozwoju, gdy ścieżka w Twoim obszarze może ulec zmianie.

Nadzieję, że pomaga komuś.

Powiązane problemy