2012-10-16 29 views
17

Tôi đã cố gắng tạo trang web ASP.NET MVC 4 đơn giản bằng chứng sử dụng các khu vực trong các dự án riêng biệt.ASP.NET MVC 4 Các khu vực trong các dự án riêng biệt không hoạt động (xem không tìm thấy)

Tôi đã cố gắng làm theo hướng dẫn: http://bob.archer.net/content/aspnet-mvc3-areas-separate-projects (Ứng dụng không hoạt động trong thư mục ảo ... Tôi sử dụng IIS). Tôi hy vọng có cách tốt hơn so với các thư mục ảo. Sau đó, tôi đã thử hướng dẫn này: http://forums.asp.net/t/1483660.aspx/1 Nhưng không có phần tử "AreasManifestDir" trong * .csproj của dự án khu vực (và gặp lỗi "Chế độ xem 'Chỉ mục' hoặc chủ của nó không được tìm thấy hoặc không có công cụ xem nào hỗ trợ tìm kiếm locations ")

Vẫn còn hỗ trợ trong ASP.NET cho MVC 4? Vì tôi thấy câu trả lời này có thể bị xóa trong tương lai: What are the pros and cons of Areas implemented as single projects vs multiple projects in asp.net mvc

Tôi chưa tìm thấy cách thực hiện nào cho MVC4.

Cấu trúc của giải pháp rất đơn giản:

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

Routes.cs của dự án Admin:

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

Nhờ sự giúp đỡ!

+0

http://elegantcode.com/2012/04/06/mvc-portable-areas/ – user960567

Trả lời

25

Bạn có thể sử dụng gói RazorGenerator để nhúng các chế độ xem Dao cạo vào một hội đồng riêng biệt. Dưới đây là các bước để thực hiện công việc này:

  1. Cài đặt Razor Generator Visual Studio mở rộng (Tools -> Extensions và cập nhật ...)
  2. Tạo một ASP.NET MVC 4 ứng dụng mới bằng cách sử dụng mẫu trống.
  3. Thêm một dự án thư viện lớp mới vào dung dịch gọi là AreasLibrary (bạn cũng có thể sử dụng một mẫu dự án ASP.NET MVC để có được Intellisense hưởng quang cảnh của Razor)
  4. Cài đặt RazorGenerator.Mvc NuGet cho dự án AreasLibrary.
  5. Thêm một bộ điều khiển bên trong dự án AreasLibrary (~/Areas/Admin/Controllers/HomeController.cs):

    public class HomeController: Controller 
    { 
        public ActionResult Index() 
        { 
         return View(); 
        } 
    } 
    
  6. Thêm một cái nhìn tương ứng (~/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. Trong các tính chất của quan điểm thiết lập Custom Tool để RazorGenerator .

  8. Bên trong thư viện lớp thêm một ~/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. Tất cả những gì còn lại là để tham khảo các thư viện lớp trong ứng dụng MVC chính.

tham khảo: http://blog.davidebbo.com/2011/06/precompile-your-mvc-views-using.html

+1

lẽ chút câu trả lời khác nhau cho câu hỏi của tôi, nhưng giải pháp đúng.Tôi muốn thực hiện các dự án khác nhau cho từng khu vực. Vì vậy, các bước 1-4 là chính xác. ** Không cần thiết để tạo một dự án với tất cả các khu vực, nhưng đơn giản hơn để thêm các mô hình + lượt xem + bộ điều khiển vào các dự án riêng biệt trực tiếp **. Cảm ơn sự giúp đỡ của bạn - sử dụng RazorGenerator là giải pháp. – Tomino

+0

Không, các khu vực không cần thiết, nhưng bất kỳ nhà phát triển MVC nào cũng nên hiểu các khu vực và cách sử dụng chúng để tổ chức tốt hơn mọi thứ – xximjasonxx

+0

@ darin-dimitrov - Giả sử tôi không muốn thêm tham chiếu thư viện lớp vào ứng dụng MVC chính như bạn ' đã mô tả trong bước 9 ở trên nhưng thay vào đó tự động "khám phá" thư viện lớp MVC của tôi. Có cách nào để thực hiện điều này không? Tôi đã thử sử dụng Assembly.LoadFrom () để thực hiện điều này, tuy nhiên tôi dường như không bao giờ có thể tìm thấy khung nhìn. Cảm ơn! – Rockdocta

Các vấn đề liên quan