Running asp.net mvc & asp.net web form in one project
.net hybrid project, hybrid project, mixing asp.net mvc, web form, all in one asp.net, lap trinh asp.net, hybrid web application
Giáo trình Borland C++ Builder - Lê Xuân Thạch_965931.pdf
Mixing asp.net mvc & web form into hybrid project
1. MIXING ASP.NET MVC & WEB FORM
(minhtri.itp@gmail.com)
I. MỤC ĐÍCH............................................................................................................................. 2
II. CÀI ĐẶT ................................................................................................................................ 2
A. YÊU CẦU HỆ THỐNG ............................................................................................... 2
B. CÀI ĐẶT & CẤU HÌNH.............................................................................................. 2
III. VẤN ĐỀ KHI TÍCH HỢP................................................................................................... 6
IV. THAM KHẢO ..................................................................................................................... 6
2. I. MỤC ĐÍCH
Bạn đã có một ứng dụng web đang chạy tốt trên nền tảng ASP.NET Webform của
Microsoft. Bạn muốn phát triển những tính năng mới cho ứng dụng này với công nghệ
mới hơn đó là ASP.NET MVC? Vấn đề gặp phải là bạn không thể bỏ đi tất cả source
code đã có từ ứng dụng Webform (vì ứng dụng đang chạy ổn định và phải mất rất nhiều
thời gian và công sức thì mới có thể xây dựng lại một ứng dụng tương tự như vậy ngay từ
đầu với công nghệ ASP.NET MVC, đó là chưa kể đến việc bạn đã sử dụng một số
component (dll) chỉ tương thích cho webform và không thể nào được trên ASP.NET
MVC)
Tài liệu này sẽ hướng dẫn cách tích hợp ứng dụng web với 2 công nghệ ASP.NET
webform và ASP.NET MVC trong cùng một projecthybrid (lai) có thể chạy được cả hai
công nghệ này trong một ứng dụng web.
Mục đích tái sử dụng code từ các ứng dụng web có sẳn.
II. CÀI ĐẶT
A. YÊU CẦU HỆ THỐNG
Visual Studio 2010 SP1
Net Framework 4.0 +
ASP.NET MVC3
B. CÀI ĐẶT& CẤU HÌNH
Để thực hiện cài đặt trước hết cần phải cài đặt trước các ứng dụng theo yêu cầu hệ
thống ở trên.
1. Tại solution chứa source của ASP.Net Webform
Tạo ASP.Net 4.0 empty project
Copy toàn bộ source của webform vào project vừa tạo
Include tất cả các file mới copy vào project
Reference các dll sử dụng của webform vào project mới(lưu ý đối
với các dll của thư viện netoffice chúng ta cần phải set lại thuộc
tính Embed Interop Types = false)
Convert code vừa include vào sang Web Application bằng cách
click chuột phải vào project và chọn “Convert to Web Application”
3. Sau khi Convert xong build lại project và giải quyết các lỗi nếu có
(EX: remove design code file đã được định nghĩa trước, thiếu
reference,..)
Đổi class ReportCommonExport (Worksheets to Worksheet)
Thêm vào file Web.config các dòng sau bên trong thẻ
<system.web>
<pages>
<namespaces>
<add namespace="System.Web.Helpers" />
<add namespace="System.Web.Mvc" />
<add namespace="System.Web.Mvc.Ajax" />
<add namespace="System.Web.Mvc.Html" />
<add namespace="System.Web.Routing" />
<add namespace="System.Web.WebPages"/>
</namespaces>
< /pages>
Mở của sổ package library lên và thực hiện cài đặt 2 gói
AddMvc3ToWebForms và TelerikMvcExtensions
4. Chúng ta sẽ mở của sổ Package Manager Console để tiến hành cài
đặt AddMvc3ToWebForms. Tiếp theo chọn menu tool->Library
Package Manager -> Package Manager Console. Thực hiện theo
hình minh họa sau
(Hình minh họa chọn Package Manager Console để cài đặt AddMvc3ToWebForms)
Sau khi cửa sổ Package Manager Console được mở chúng ta chọn
project cần cài đạt Nunit gõ lệnh PM> Install-Package
AddMvc3ToWebForms để tiến hành cài đặt NUnit
(Hình minh họa cài đặt AddMvc3ToWebForms )
5. Việc cài đặt TelerikMvcExtensions được thực hiện tương tự.
2. Hiệu chỉnh file Global.asax.
Do file Global.asax. của project cũ không đúng cấu trúc nên chúng
ta phải tạo lại file Global.asax bằng cách sau:
Đổi tên file Global.asax cũ.
Tạo mới file Global.asax
Copy nội dung trong file Global.asax cũ vào file Global.asax mới.
Tiếp theo reference mvc vào file Global.asax (using
System.Web.Mvc;using System.Web.Routing;)
Tiếp theo chúng ta cần đăng ký route và filter trong file
Global.asax bằng cách thêm vào phương thức sau:
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defa
ults
);
}
Tiếp theo tìm đến phương thức
void Application_Start(object sender, EventArgs e) và copy nội
dung file nội dung trong phương thức này trong mvc project vào
project mới.
3. Hiệu chỉnh project vừa tạo sang mvc project.
Để tạo mới được các view, model, controller trong project vừa tạo
chúng ta cần chuyển loại project sang mvc bằng cách click chuột
phải vào project chọn Unload. Tiếp theo đó click chuột phải vào
project vừa unload project chọn edit. Tìm đến tag ProjectGuid và
thay thế bằng đoạn code sau đây:
<ProjectGuid>{0A185973-711F-4E45-8341-5738AFEB9195}</ProjectGuid>
<ProjectTypeGuids>{E53F8FEA-EAE0-44A6-8774-FFD645390401};{349c5851-65df-11da-9384-
00065b846f21};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}</ProjectTypeGuids>
Tiếp theo click chuột phải vào project và chọn Reload project.
6. 4. Copy source từ MVC solution sang WebForm solution
Click chuột phải vào WebForm solution (mix solution) chọn add
Existing Project tiếp theo đó chọn project cần add từ MVC
solution qua.
Add reference các dll còn thiếu như (AutoMap, EntityFramework,
…)
Remove các file design từ App_Reource vì WebForm solution sẽ
không dịch được các file này khi chép từ MVC solution vào.
Sau khi hoàn thành hết các bước trên thực hiện build lại project và
sửa các lỗi xung đột code nếu có.
Đến bước này việc tích hợp các chức năng từ MVC solution vào
WebForm solution đã hoàn thành.
Hãy thưởng thức thành quả của việc tích hợp!
III. VẤN ĐỀ KHI TÍCH HỢP
Phải reference lại các webservices của WebForm solution
Hiệu chỉnh lại layout của MVC solution cho tương thích với
WebForm solution.
Hiệu chỉnh lại luồng kiểm tra quyền cho tương thích giữa
WebForm solution và MVC solution .
Hiệu chỉnh cấu trúc link trên menu theo từng chức năng sử dụng
webform hoặc sử dụng MVC.
IV. THAM KHẢO
http://geekswithblogs.net/ranganh/archive/2011/03/24/adding-mvc-3-features-to-
an-existing-asp.net-web-forms-again.aspx
http://www.hanselman.com/blog/CreatingANuGetPackageIn7EasyStepsPlusUsin
gNuGetToIntegrateASPNETMVC3IntoExistingWebFormsApplications.aspx
http://www.packtpub.com/article/mixing-asp.net-webforms-and-asp.net-mvc
http://www.britishdeveloper.co.uk/2011/05/convert-web-forms-mvc3-how-
to.html