2011-01-07 25 views
5

Đối với ứng dụng web mới của tôi, tôi đang tranh luận về việc sử dụng nhiều chế độ xem hoặc điều kiện trong chế độ xem.Trong ASP.NET MVC (3.0/Razor), bạn có thích nhiều chế độ xem hoặc điều kiện trong chế độ xem không? Tại sao?

Một trường hợp mẫu sẽ hiển thị thông tin khác nhau cho người dùng được xác thực và không được xác thực. Điều này có thể được xử lý một vài cách.

  1. Trong bộ điều khiển, kiểm tra IsAuthenticated và gửi lại một cái nhìn trên cơ sở đó
  2. Trong giao diện, kiểm tra IsAuthenticated và hiển thị khối thông tin trên cơ sở đó

Ưu điểm của nhiều quan điểm: nhỏ , chế độ xem ít phức tạp - bên cạnh không có logic trong chế độ xem

Ưu điểm của một lần xem: ít xem tệp để duy trì

Điểm yếu rõ ràng là sự đối lập của các ưu: nhiều tệp hơn để duy trì hoặc xem các tệp phức tạp hơn.

Bạn thích cái nào hơn? Tại sao? Bất kỳ ưu/khuyết điểm nào tôi chưa nêu ở đây?

Cập nhật: Giả sử mỗi chế độ xem sử dụng trang bố cục và chế độ xem một phần để trừu tượng mã lặp lại rõ ràng.

Trả lời

10

Điều này nghe giống như một địa điểm tốt để thảo luận về giá trị của việc tránh khái quát hóa sớm. Khi người anh em họ đến tối ưu hóa sớm, PG có thể chỉ là làm tê liệt. Tôi nói điều này bởi vì tôi thường sớm khái quát và nó có xu hướng can ngăn những người phụ nữ từ tán tỉnh tôi, cười nhạo cười vui nhộn của tôi, vv

Xem: http://ryanfarley.com/blog/archive/2004/04/30/570.aspx

quy luật chung của ngón tay cái là thế này:

Lặp lại chính bạn hai lần.
Khi bạn sắp lặp lại mình một lần thứ ba, tạo ra một sự trừu tượng

tôi có xu hướng làm theo nguyên tắc này trong ViewsPartials tôi:

  1. Tôi tạo View - no partials đầu tiên của mình.
  2. Tôi tạo Chế độ xem thứ hai - số .
  3. Tôi tạo Chế độ xem thứ ba của mình bằng cách đoạn tóm tắt mã từ Chế độ xem đầu tiên và thứ hai vào partials có thể tái sử dụng .
  4. Tôi lặp lại cho đến khi Mountain Dew biến mất.

Mặc dù câu trả lời của tôi cho câu hỏi của bạn có vẻ công khai, tôi nghĩ điểm tôi đang cố gắng để làm là, như các nhà phát triển, chúng ta có xu hướng thưởng thức lãng phí rất nhiều thời gian suy ngẫm về những cách khác nhau mà chúng tôi có thể trừu tượng đi nhiều lớp hơn và nhiều hơn nữa từ instantiations cá nhân của chúng tôi. Trớ trêu thay, một sự trừu tượng chỉ có giá trị trong khi nó làm giảm sự cần thiết lặp lại, và sự lặp lại chỉ có hại khi nó làm giảm khả năng bạn sẽ thực hiện bất cứ điều gì, vì vậy mong muốn lặp lại quá trừu tượng cũng gây bất lợi như mã hóa với bó của TRÊN L RESI L ERI TIẾP THEO.

Tôi nghi ngờ điều đó đã giúp ích. Nhưng, than ôi.

+1

Tôi không thể đồng ý với bạn nhiều hơn về điều khái quát sớm. Ngoại trừ tôi không uống sương núi ... thứ đó thật khó chịu :) – Tundey

+0

Rất tiếc, thật tuyệt. Tôi đồng ý với những gì bạn đang nói quá. Chỉ cần ném nó ra khỏi đó, trong trường hợp có một số góc độ mà tôi đã không nghĩ đến. Tốt quy tắc của ngón tay cái bạn đã có mặc dù. Và, cảm ơn Chirpy ... chẳng hạn như sản phẩm tuyệt vời, tôi sử dụng nó trong mọi dự án tôi làm việc ngay bây giờ. – Chaddeus

+0

Chad - đó là một câu hỏi hay. Và trớ trêu thay, câu trả lời của tôi cho nó là một chút TÓM TẮT và quá mức. Ngoài ra, một lời cảm ơn thực sự lớn đối với các tín đồ Chirpy - giúp tôi tiếp tục! –

1

tôi muốn nói điều đó phụ thuộc vào sự khác nhau của 2 kịch bản. nếu đó là sự khác biệt lớn hoặc khác biệt, hãy thực hiện một chế độ xem riêng. nếu đó là sự khác biệt xuất hiện trên nhiều trang (như hiển thị các điều khiển đăng nhập so với nút đăng xuất), hãy biến nó thành một phần xem riêng biệt. cho một vài khác biệt nhỏ, nếu khối là ok

+0

Điểm tốt. nếu đó là một sự khác biệt nhỏ, có lẽ sẽ là một ý tưởng tồi khi sử dụng 2 chế độ xem riêng biệt. – Chaddeus

1

Tôi thích một chế độ xem đơn giản hơn nếu chỉ đơn giản là tình huống "nếu x hiển thị y". Bất cứ điều gì nhiều hơn thế và nó có thể vượt khỏi tầm kiểm soát khá dễ dàng. Giảm html trùng lặp là giá trị sự cân bằng của một lượng nhỏ logic đơn giản, mặc dù.

Tôi nghi ngờ câu trả lời về điều này sẽ được chia nhỏ khá nhiều giữa vì mỗi bên đều có giá trị riêng.

+0

Đúng ... Tôi đã hỏi vì có lẽ tôi không nghĩ đến điều gì đó (vâng, ok ... có lẽ tôi không nghĩ đến điều gì). ;) – Chaddeus

0

Tôi sẽ bắt đầu bằng một chế độ xem ... sau đó tùy thuộc vào mức độ phức tạp của sự khác biệt giữa lượt xem được xác thực và chưa được xác thực, bạn có thể tạo nhiều chế độ xem.

+0

Ý tưởng hay. Cảm ơn! – Chaddeus

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