2015-05-12 19 views
5

Tôi có một trang web được phát triển trong ASP.NET Web Forms với .NET FrameWork 4.5.1Thêm ASP.NET MVC Area vào ASP.NET Web Forms hiện có dự án

Chúng tôi có một yêu cầu để xây dựng một bản sao của trang web cho thiết bị di động (đáp ứng không hoạt động cho chúng tôi trong trường hợp này) vì vậy tôi đã kết thúc nghĩ đến doind phần này của trang web với ASP.NET MVC.

Lưu ý trước khi tiếp tục: Tôi biết có một số câu hỏi đã trả lời về chủ đề này và trong các trang web có một số bài viết về làm thế nào để kết hợp chúng. Nhưng không ai trong số họ làm việc cho tôi bởi vì tôi đang cố gắng sử dụng One ASP.NET Framework để tránh đi qua rất nhiều công việc thủ công.

Vì vậy, những gì tôi đã làm là:

  1. Thêm gói NuGet cho MVC trong WebForms ASP.NET của tôi dự án
  2. Sau khi thêm, tôi cấu hình một Diện tích MVC để chứa các trang web di động của tôi trong MVC

cấu trúc dự án trông như thế này:

Project Structure

Và ở đây có vấn đề của tôi: Nếu tôi chạy bất kỳ trang ASPX, họ chạy ok. Khi tôi đi đến/Mobile/Home/Index, nó nói rằng tài nguyên không được tìm thấy. Tôi nghi ngờ điều này là do thư mục App_Start không tồn tại trong dự án của tôi và Starup.cs không có ở đó nên trang web không biết gì về định tuyến MVC.

Câu hỏi

  1. Làm thế nào tôi có thể thêm các thư mục App_Start và Starup.cs với các giá trị mặc định mà không bị quá trình (tránh sao chép/dán hoặc quy trình thủ công)?

  2. Làm thế nào tôi có thể làm cho cả hai (dự án loại web) sống với nhau khi họ nói nó có thể được thực hiện với One ASP.NET Framework ?.

Cảm ơn!

Trả lời

5

Bạn sẽ cần phải đăng ký các lĩnh vực trong Global.asax của bạn (thêm nó thông qua tùy chọn Add Item đơn nếu nó không tồn tại):

public class Global : HttpApplication 
{ 

    protected void Application_Start(object sender, EventArgs e) 
    { 
     AreaRegistration.RegisterAllAreas(); 

    } 

} 

này sẽ cho phép các liên kết đến di động của bạn @localhost/{ProjectName}/Mobile/Home

+0

Vì vậy, không cần phải tạo ra các Starup.cs? Nếu tôi cần BundleConfig.cs tôi cũng phải tự mình tạo ra nó? –

+1

Có, bạn sẽ cần phải tạo một tệp cấu hình tĩnh cho từng khía cạnh chức năng của MVC mà bạn muốn sử dụng trong tiểu dự án. –

+1

@ FelipeCorrea Tôi vừa chạy thử nghiệm với một dự án asp trống, và tất cả những gì bạn cần là đăng ký khu vực trong Global.asax, mà bạn thêm vào dự án chính nếu nó chưa tồn tại. –

0

Nếu tôi sắp kết hợp cả hai trong cùng một dự án, tôi sẽ bắt đầu với một dự án MVC và có các trang ASP.Net nằm trong thư mục con của riêng chúng.

Nhưng có lẽ bạn nên xem xét có 2 dự án riêng biệt, mỗi dự án một "ứng dụng".

Bây giờ, một ứng dụng riêng biệt có thể được triển khai tới MainApplicationFolder \ SomeSubfolder.

Tất nhiên, bạn cũng có thể sau đó muốn xem xét giống như sau cho các liên kết của bạn sau đó:

@VirtualPathUtility.ToAbsolute("~/SomeController/SomeAction") 
+0

Tôi nhận được quan điểm của bạn, mặc dù tôi nghĩ rằng nó là tốt để tận dụng lợi thế của các khả năng của khuôn khổ. Nếu bạn có thể sử dụng chúng với nhau và nó áp dụng cho vấn đề bạn đang cố gắng giải quyết, tại sao phức tạp hơn nó tách phong cách, tham chiếu javascript và triển khai? Họ nói (Microsoft) rằng One ASP.NET Framework cho phép bạn bắt đầu với bất kỳ công nghệ nào và sau đó tích hợp bất cứ điều gì bạn muốn: Web API, MVC và Web Forms. Tôi muốn làm cho nó sử dụng khả năng này. –

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