ASP.NET MVC 4 obszary w oddzielnych projektach nie działa (widok nie znaleziono)

Próbowałem stworzyć prosty proof-of-concept ASP.NET strona internetowa MVC 4 wykorzystująca obszary w oddzielnych projektach.

Próbowałem po tutoriale: http://bob.archer.net/content/aspnet-mvc3-areas-separate-projects (aplikacja nie działa w katalogu wirtualnym... Używam IIS). Mam nadzieję, że jest lepszy sposób niż wirtualne katalogi.

Potem wypróbowałem ten tutorial: http://forums.asp.net/t/1483660.aspx/1 Ale nie ma elementu "AreasManifestDir" w *.csproj obszaru projekt (i dostał błąd "widok' Index 'lub jego główny nie został znaleziony lub żaden silnik widoku nie obsługuje wyszukiwanych lokalizacji")

Czy jest jeszcze wsparcie w ASP.NET dla MVC 4? Ponieważ znalazłem taką odpowiedź, że można ją usunąć w przyszłości: jakie są plusy i minusy obszarów realizowanych jako pojedyncze projekty vs wiele projektów w asp.net mvc

Nie znalazłem żadnego how-to dla MVC4.

Struktura rozwiązania jest prosta:

Solution 'MvcAreasMultiProject'
    Areas [Directory]
        Admin [Project]
        Models
        Views
        Controllers
        Routes.cs [Examples]
    MvcAreasMultiProject [MainProject]
        - References Admin project
        M.V.C

Trasy.cs admina projekt:

namespace Admin
{
public class Routes : AreaRegistration
{
    public override string AreaName { get { return "Admin"; } }

    public override void RegisterArea(AreaRegistrationContext context)
    {
        context.MapRoute(
            "Admin_Default",
            "Admin/{action}/{id}",
            new { controller = "Admin", action = "Index", id = "" },
            new[] { "Admin.Controllers" }
        );
    }
}
}

Dzięki za pomoc!

Author: Community, 2012-10-16

1 answers

Możesz użyć pakietu RazorGenerator do osadzenia swoich widoków w osobnym zestawie. Oto kroki, aby to zrobić:

  1. Zainstaluj rozszerzenie Razor Generator Visual Studio (Narzędzia - > Rozszerzenia i aktualizacje...)
  2. Utwórz nowy ASP.NET aplikacja MVC 4 korzystająca z pustego szablonu.
  3. Dodaj nowy projekt biblioteki klas do rozwiązania o nazwie AreasLibrary (Możesz również użyć ASP.NET szablon projektu MVC w celu uzyskania Intellisense w Razor views)
  4. zainstaluj RazorGenerator.Mvc NuGet do projektu AreasLibrary.
  5. Dodaj kontroler wewnątrz projektu AreasLibrary(~/Areas/Admin/Controllers/HomeController.cs):

    public class HomeController: Controller
    {
        public ActionResult Index()
        {
            return View();
        }
    }
    
  6. Dodaj odpowiedni Widok (~/Areas/Admin/Views/Home/Index.cshtml):

    @* Generator: MvcView *@
    
    @{
        Layout = null;
    }
    
    <!DOCTYPE html>
    
    <html>
    <head>
        <meta name="viewport" content="width=device-width" />
        <title>View1</title>
    </head>
    <body>
        <div>
            Index view        
        </div>
    </body>
    </html>
    
  7. We właściwościach widoku Ustaw Custom Tool na RazorGenerator.

  8. Wewnątrz biblioteki klas dodaj ~/Areas/AdminAreaRegistration.cs:

    public class AdminAreaRegistration : AreaRegistration
    {
        public override string AreaName { get { return "Admin"; } }
    
        public override void RegisterArea(AreaRegistrationContext context)
        {
            context.MapRoute(
                "Admin_Default",
                "Admin/{action}/{id}",
                new { controller = "Home", action = "Index", id = "" }
            );
        }
    }
    
  9. Pozostaje tylko odwołać się do biblioteki klas w głównym MVC podanie.

Numer referencyjny: http://blog.davidebbo.com/2011/06/precompile-your-mvc-views-using.html

 27
Author: Darin Dimitrov,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-12-12 18:22:24