'Vòng đời trang' của trang ASP.NET MVC, so với ASP.NET WebForms là gì?


158

'Vòng đời trang' của trang ASP.NET MVC, so với ASP.NET WebForms là gì?

Tôi đang cố gắng hiểu rõ hơn câu hỏi 'đơn giản' này để xác định xem các trang hiện có mà tôi có trong một trang web (rất) đơn giản có thể dễ dàng chuyển đổi từ ASP.NET WebForms hay không.

Hoặc là "chuyển đổi" của quy trình bên dưới hoặc vòng đời thay thế sẽ là thứ tôi đang tìm kiếm.

Những gì tôi đang làm:

(vâng tôi biết rằng bất kỳ ai có khả năng trả lời câu hỏi của tôi đều biết tất cả những điều này - tôi chỉ đang cố gắng so sánh 'vòng đời' nên tôi nghĩ tôi sẽ bắt đầu bằng cách điền vào những gì chúng ta đã biết)

Kết xuất trang:

  • Tôi có một trang chính chứa mẫu cơ bản của tôi
  • Tôi có các trang nội dung cung cấp cho tôi các vùng được đặt tên từ trang chính mà tôi đặt nội dung.
  • Trong một trình xử lý sự kiện cho mỗi trang nội dung, tôi tải dữ liệu từ cơ sở dữ liệu (chủ yếu là chỉ đọc).
  • Tôi liên kết dữ liệu này với các điều khiển ASP.NET đại diện cho lưới, thả xuống hoặc lặp lại. Dữ liệu này tất cả 'cuộc sống' bên trong HTML được tạo. Một số phần mềm được đưa vào ViewState (nhưng tôi sẽ không tham gia quá nhiều!)
  • Tôi đặt thuộc tính hoặc liên kết dữ liệu với các mục nhất định như điều khiển Image hoặc TextBox trên trang.
  • Trang được gửi đến máy khách được hiển thị dưới dạng HTML không thể sử dụng lại.
  • Tôi cố gắng tránh sử dụng ViewState ngoài những gì trang cần tối thiểu.

Phía khách hàng (không sử dụng ASP.NET AJAX):

  • Tôi có thể sử dụng JQuery và một số thủ thuật khó chịu để tìm các điều khiển trên trang và thực hiện các thao tác trên chúng.
  • Nếu người dùng chọn từ danh sách thả xuống - một postback được tạo sẽ kích hoạt sự kiện C # trong cơ sở mã của tôi. Sự kiện này có thể đi đến cơ sở dữ liệu, nhưng bất cứ điều gì nó làm một trang HTML hoàn toàn mới được tạo ra sẽ được gửi lại cho khách hàng.
  • Tôi có thể sử dụng Page.Session để lưu trữ các cặp giá trị khóa tôi cần sử dụng lại sau

Vậy với MVC, 'vòng đời' này thay đổi như thế nào?


2
Một số tài liệu tham khảo từ dấu trang của tôi nêu bật cách thức đường ống yêu cầu hoạt động trong ASP.NET MVC. Điều này thường hữu ích 1. để hiểu chính ASP.NET MVC 2. để hiểu các điểm tiêm khác nhau được cung cấp bởi MVC và để hiểu nó. https://docs.google.com/open?id=0B0_EIyBZvSQsOTU3N2Q2NDEtMWNjMS00ZTc0LWJmMjUtM2I0M2I5NDY2ZDNl [ simple-talk.com/content/article.aspx?article=1358](https://...
humblelistener


Câu trả lời:


39

Tôi sẽ cố gắng nhận xét về từng điểm đạn bạn đã đề cập:

Các trang chính của bạn vẫn tồn tại trong MVC và được sử dụng để cung cấp bố cục nhất quán cho trang web. Không có nhiều mới ở đó.

Các trang nội dung của bạn sẽ trở thành lượt xem trong thế giới MVC. Họ vẫn cung cấp các khu vực nội dung tương tự cho các trang chính của bạn.

Không nên sử dụng sự kiện của các biểu mẫu web trong MVC, thay vào đó các lớp Trình điều khiển của bạn và các phương thức hành động của chúng sẽ xử lý việc tải dữ liệu của bạn vào một "mô hình" được chuyển đến dạng xem.

Mặc dù kiểu dữ liệu kiểu webform có thể có trong MVC, tôi thấy rằng nó không phải là giải pháp tối ưu. Tốt hơn là đặt dữ liệu của bạn trong một lớp mô hình và gõ mạnh vào chế độ xem của bạn để bạn có quyền truy cập trực tiếp vào mô hình đó. Sau đó, nó chỉ đơn giản là vấn đề sử dụng <%= ViewData.Model.SomeProperty %>cú pháp để truy cập dữ liệu của bạn và hiển thị nó ở các vị trí mong muốn. Đối với viewstate, khuyến nghị của tôi là quên rằng nó thậm chí còn tồn tại.

Hãy nhớ rằng một trong những lợi thế của việc sử dụng MVC là bạn có quyền kiểm soát HTML bạn gửi cho khách hàng. Nắm bắt sức mạnh đó và cố gắng tìm giải pháp cho phép bạn duy trì sự kiểm soát đó. Các điều khiển biểu mẫu web cố gắng ẩn html khỏi bạn và do đó làm cho việc tùy chỉnh html trở nên khó khăn hơn khi bạn cần.

Tôi rất muốn giới thiệu JQuery hoặc một trong những thư viện javascript mạnh mẽ tương tự khác. Nhưng hãy học cách sử dụng chúng để truy cập trực tiếp vào DOM DOM và tránh các vấn đề xáo trộn id của các điều khiển biểu mẫu web.

Bạn có thể sử dụng jquery để móc vào lựa chọn thả xuống ở phía máy khách và gửi yêu cầu kiểu tiêu chuẩn hoặc ajax. Những yêu cầu đó có thể trả về các trang mới, chuyển hướng, đoạn html hoặc thậm chí dữ liệu JSON có thể được sử dụng để cập nhật trang hiện có.

Phiên asp.net có thể được sử dụng khi cần thiết.


cảm ơn câu trả lời của bạn đó thực sự là JQuery đã đưa tôi trở lại với MVC. Tôi đã xem xét nó một cách ngắn gọn và loại bỏ nó (ít nhất là bây giờ). chơi với JQuery và cố gắng tìm mọi thứ trong DOM đã trở nên quá đau đớn nên tôi nghĩ tôi sẽ cố gắng quay lại MVC và tìm hiểu thêm
Simon_Weaver

Các trang MVC có một thuộc Modeltính để truy cập vào mô hình, bạn không phải trải qua ViewData.
Tsahi Asher
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.