15

Gdy jestem wewnątrz Admin obszaru i mapować moje trasy przy użyciu routingu atrybutów, nie można znaleźć widoku, ponieważ nie wygląda on wewnątrz folderów widoku rzeczywistego obszaru, a zamiast niego tylko foldery widoku globalnego.routing atrybutów mvc5 w obrębie obszaru nie może znaleźć widoku

Tylko jeśli przekażę pełną ścieżkę do wyświetlenia, to mogę ją wyświetlić, w przeciwnym razie spowoduje błąd.

Błąd

The view 'Authorize' or its master was not found or no view engine supports the searched locations. The following locations were searched: 
~/Views/Home/Authorize.aspx 
~/Views/Home/Authorize.ascx 
~/Views/Shared/Authorize.aspx 
~/Views/Shared/Authorize.ascx 
~/Views/Home/Authorize.cshtml 
~/Views/Home/Authorize.vbhtml 
~/Views/Shared/Authorize.cshtml 
~/Views/Shared/Authorize.vbhtml 

Kod

[RoutePrefix("admin")] 
public class HomeController : Controller 
{ 

    [Route] 
    public ActionResult Index() 
    { 
     return View("Authorize"); // Error 
     return View("~/Areas/Admin/Views/Home/Authorize.cshtml"); // Working 
    } 
} 

Zauważ, że jeśli mogę wyłączyć routing atrybutów i wrócić do starych dobrych tras będzie działać. Jakikolwiek sposób naprawienia tego lub działa zgodnie z przeznaczeniem i powinienem zastosować pełną ścieżkę we wszystkich obszarach?

+0

Może pomóc niektóre http://stackoverflow.com/questions/22436573/default-area-cant-find-view –

Odpowiedz

24

Trzeba dodać atrybut [RouteArea("")] do kontrolera:

[RouteArea("Admin")] 
public class HomeController : Controller 

można znaleźć w dokumentacji here.

+1

To dziwne, że daje 'Błąd HTTP 404.0 - Not Found' na akcji Index. – sed

+2

Znalezione przyczyny. Kiedy używasz 'RouteArea', powinieneś usunąć' RoutePrefix'. – sed

+0

Dobrze, poprawiłem odpowiedź, aby to odzwierciedlić. – James