2009-08-07 38 views
5

Tôi làm việc trên các ứng dụng asp.net 'trong nhà' và rất thích sử dụng asp.net mvc, nhưng không thể làm ứng dụng của chúng tôi được triển khai cho máy chủ web không có trong kiểm soát của chúng tôi và hiện chỉ có .net framework v2 và IIS6. Cũng như không có khả năng có thời gian/tiền chi cho việc chuyển đổi các ứng dụng WebForms hiện tại ...WebForms tốt hơn lấy cảm hứng từ asp.net MVC

Vì vậy, bất kỳ thông tin nào để giúp tôi tạo các ứng dụng Web.net asp.net tốt hơn sẽ được đánh giá cao ... Tôi đã đọc "những gì hút" danh sách về WebForms từ những người MVC mà chắc chắn có những giải pháp/làm việc xung quanh để làm cho WebForms "ít sucky" ...

những thứ mà tôi hiểu rằng có thể được cải thiện (nhưng cần trợ giúp về):

  • xóa chế độ xem cho các trang không postback (xóa thẻ runat = "server"?)
  • giảm thiểu sử dụng chế độ xem - sử dụng <span><asp:literal /></span> thay vì nhãn asp: (chúng tôi không bao giờ sử dụng thuộc tính kiểu của điều khiển phía máy chủ nhưng sử dụng thuộc tính CssClass chủ yếu để giữ CSS trong tệp CSS)
  • sử dụng trình xử lý ashx cho yêu cầu ajax (điều này có thể được tiếp tục ?? ví dụ. một postback cho một handler?)
  • có thể loại bỏ ViewState hoàn toàn và vẫn còn postback? (là nó đọc các biến dạng thay vì đọc các giá trị điều khiển?)
  • bạn có thể tắt chế độ xem theo chương trình nếu bạn biết người dùng có javascript không? ví dụ. sau đó một yêu cầu ajax có thể gửi biểu mẫu nhưng sẽ hoạt động nếu javascript bị vô hiệu hóa?
  • chúng tôi đã giữ tất cả logic kinh doanh của mình trong lớp BR/BL và chúng tôi có lớp DAL tương tự để truy cập cơ sở dữ liệu ... vì vậy mã aspx phía sau nói chung khá nhẹ ... (xác thực cũng có trong BR/BL trả lời yêu cầu ajax hoặc postback cho cùng một tác vụ yêu cầu ít (hay không) sao chép mã)
  • sử dụng ít thành phần hơn ... (điều khiển máy chủ ít hơn ... ở một mức độ nào đó cũng có nghĩa là sử dụng các điều khiển đã giành được không có ID crap)

Tôi không thực sự quan tâm đến các URL được định dạng gọn gàng như mạng nội bộ của nó (và rất nhiều không liên quan) và SEO không quan tâm ... mặc dù các url MVC rực rỡ ...

Một lần nữa, bất kỳ trợ giúp, tài nguyên, mẫu mã hoặc bất cứ điều gì sẽ là tuyệt vời! nhờ heaps.

Trả lời

1

Đối với câu hỏi ViewState, hãy đảm bảo bạn hiểu sự khác biệt giữa ViewState và ControlState. These articles đã giúp tôi với điều đó. Tôi tắt ViewState trong web.config cho các ứng dụng Webform hiện có của tôi và tôi không có bất kỳ vấn đề gì. Tôi cũng tránh bất kỳ các điều khiển * Xem và dính chủ yếu để PlaceHolder, Literal, Repeater, Button, TextBox, DropDownList (có thể hành động kỳ quặc mà không ViewState, nhưng không có gì showstopping) và điều khiển cơ bản khác. Bạn có thể đăng lại với ViewState.

ASHX hoạt động tốt cho các yêu cầu Ajax. Tôi sẽ không lấy nó thêm nữa.

Tôi nghĩ bạn đang đi đúng hướng. Bạn đã tách các lớp của bạn và đặt những thứ mà nó nên được và bạn dường như biết nơi mà mọi thứ nên đi, và biết là một nửa trận chiến.

+0

đọc bài viết đó và cảm thấy tinh ranh cho tất cả ô nhiễm ViewState mà tôi không nghi ngờ gì ... Liên kết tuyệt vời! Ngoài ra, nó làm rõ các viewstate là không cần thiết để có được giá trị hình thức trong quá trình postback (những gì tôi bây giờ biết là một huyền thoại) – davidsleeps

3

có thể thêm vào này

xử lý sử dụng ashx cho ajax yêu cầu

Sử dụng Jayrock để xử lý yêu cầu Ajax. Điều này rất giống với MVC chỉ với JsonResult.

bạn có thể tắt ViewState lập trình nếu bạn biết người dùng có javascript

Bạn có thể phát hiện nếu JS được kích hoạt sử dụng approach này. Vì vậy khá dễ dàng để vô hiệu hóa ViewState. Có thể dễ dàng xử lý trong trang cơ sở nếu bạn có. Vì vậy, số lượng mã lặp lại -> 0.

Additinaly bạn có thể tìm thấy WebFormsMVP hữu ích.

+0

Vâng, sẽ thêm MVP. Không thực sự đẹp như MVC, nhưng đối với WebForms, đó là tất cả những gì bạn có. – Martin

+0

MVP có vẻ hữu ích, nhưng: Yêu cầu ASP.NET 3.5 SP1 – davidsleeps

0

nghĩ rằng tôi muốn thêm vào bài đăng này (cho khi có người đi qua nó) liên kết sau đó là khá hữu ích khi sử dụng jQuery (hoặc javascript cho rằng vấn đề):

từ blog Giàu Strahl của: jQuery Mẫu serialization nếu không có ASP.NET ViewState:
http://www.west-wind.com/weblog/posts/472329.aspx

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