2008-12-14 36 views
18

Có lẽ đây là một câu hỏi ngây thơ. Trong sự hiểu biết của tôi, ASP.NET MVC không thể làm việc với ViewState và Postback đó là nguyên tắc cơ bản của các hình thức ASP.NET. Đúng không?ASP.NET MVC không hoạt động với ViewState và Postback?

Nếu có, thì tất cả điều khiển ASP.NET Web tùy thuộc vào ViewState & Postback không thể được sử dụng trong ASP.NET MVC, phải không?

Trả lời

28

Điều khiển phía máy chủ của ASP.NET hoạt động với WebForms chứ không phải MVC. MVC không sử dụng các điều khiển theo nghĩa ASP.NET truyền thống (ít nhất là).

Mô hình MVC hoàn toàn khác với mô hình WebForms; không tốt hơn hay tệ hơn, nhưng rất khác. Sử dụng MVC đặt nhà phát triển gần gũi hơn với HTML được tạo ra, cho chính bản thân nó nhiều hơn về thử nghiệm đơn vị và cung cấp sự tách biệt mạnh mẽ các mối quan tâm giữa giao diện người dùng và mã điền vào giao diện người dùng đó. Ở cái nhìn đầu tiên, đặc biệt là các cựu chiến binh ASP.NET cứng rắn, MVC có vẻ như là một bước lùi lớn (nếu bạn đã viết mã, thì các phát triển ASP COM có thể nhảy vào đầu bạn).

Nhưng hãy thử dùng MVC. Nó rất thú vị và mô hình của nó khá hấp dẫn khi bạn quen với nó.

đọc thêm ở đây: http://quickstarts.asp.net/previews/mvc/mvc_HowToRenderFormUsingHtmlHelpers.htm

Ngoài ra, kiểm tra động cơ này trên blog thú vị mà sử dụng MVC: http://www.codeplex.com/oxite

Cuối cùng, hãy kiểm tra dự án cửa hàng MVC Rob Conery: http://wekeroad.com/category/mvc-storefront

+4

"ít nhất là" - Hy vọng rằng không bao giờ! – UpTheCreek

+0

Đồng ý! Mô hình MVC chỉ phát triển và phát triển trên bạn. –

+0

mô hình mvc thực sự là cách tiếp cận tốt hơn. Các trang .net được tạo ra cho Windows dev để có thể bắt đầu viết mã cho web, nhưng trên thực tế mô hình này không phù hợp để phát triển web. MVC có vẻ giống như một bước lùi, nhưng chỉ cho những người không hiểu vòng đời của một trang web. Tôi vui vì postback và viewstate bị giết. Sẽ không bỏ lỡ chúng. – sarsnake

0

sức này làm bạn ngạc nhiên, nhưng tôi vô tình làm rơi nút trên trang MVC và triển khai sự kiện Click, và nó thực sự hoạt động!

Tôi đã rất ngạc nhiên, có thể nó chỉ hoạt động trong trường hợp đơn giản này (đó là phần tử duy nhất trên trang tại thời điểm đó) và thực tế là phản hồi kết thúc bằng chuyển hướng, nhưng trong một số trường hợp có vẻ như nó có thể hoạt động :)

+0

Không phải tất cả các điều khiển đều bị hỏng bởi MVC. Chỉ những người yêu cầu thẻ

(ví dụ: TextBox, DropDown, v.v.). Nếu nó đòi hỏi ViewState, nó sẽ không (không nên) làm việc trong MVC. – chadmyers

+1

Nếu nó không có runat = máy chủ nó không được sử dụng như một điều khiển phía máy chủ! –

4

Điều này có thể làm bạn ngạc nhiên, nhưng tôi vô tình đánh rơi một nút trên MVC trang, và thực hiện các sự kiện Click, và nó thực sự làm việc!

Hãy sửa tôi nếu tôi sai, nhưng tôi nghĩ rằng không cần một ViewState. Nó sẽ tạo một thẻ HTML đơn giản và nếu bạn không thay đổi các thuộc tính của nút tại thời gian chạy (văn bản, sự kiện, ...), thì không cần VIEWSTATE.

Có thể đó là lý do tại sao nó hoạt động.

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