2010-05-26 50 views
5

Tôi thấy mình viết rất nhiều mã trong chế độ xem của tôi trông giống như mã bên dưới. Trong trường hợp này, tôi muốn thêm một số HTML giải thích cho một người mới, và HTML khác nhau cho một người dùng chuyên gia.Phân nhánh logic trong chế độ xem MVC

<% if (ViewData["novice"] != null) { %> 
some extra HTML for a novice 
<% } else { %> 
some HTML for an expert 
<% } %> 

Đây là logic trình bày, do đó, điều này có nghĩa là nó ở trong chế độ xem so với bộ điều khiển. Tuy nhiên, nó được xấu xí thực sự nhanh chóng, đặc biệt là khi ReSharper muốn di chuyển tất cả các niềng răng xung quanh để làm cho nó thậm chí xấu hơn (là có một cách để biến mà tắt cho quan điểm?).

Câu hỏi của tôi là liệu điều này có đúng hay không hoặc tôi có nên chia nhánh trong bộ điều khiển thành hai chế độ xem riêng biệt không? Nếu tôi thực hiện hai chế độ xem, tôi sẽ có rất nhiều HTML trùng lặp để duy trì.

Hoặc tôi có nên làm hai chế độ xem riêng biệt với chế độ xem một phần chung của nội dung chung không?

Trả lời

2

Lý tưởng nhất, loại logic này sẽ được xử lý trong mô hình chế độ xem và chế độ xem sẽ chỉ hiển thị mô hình.

Vì vậy, bạn có thể có một cái gì đó như theo quan điểm của bạn:

<%= ViewData["helptext"] %> 

và logic của bạn trong bộ điều khiển sẽ là một cái gì đó như:

ViewData["helpText"] = isNovice ? noviceText : expertText; 

cách mà bạn có thể đẩy logic lại với bộ điều khiển và giữ cho quan điểm của bạn đẹp và sạch sẽ

+0

Tôi có thể thấy được lợi thế của điều này, nhưng nếu văn bản là đánh dấu HTML phức tạp, hãy nói với hình ảnh và nội dung? Bây giờ bạn có HTML trong bộ điều khiển của bạn. Ngoài ra, cảm ơn bạn đã sửa mã ví dụ của tôi –

+0

Tốt lomax tốt hơn nhiều. Tôi thích nó. +1 –

+0

Nó phụ thuộc vào tình huống với văn bản phức tạp và cần bao nhiêu thay đổi, nhưng tôi không thấy tại sao phương pháp tương tự không thể được sử dụng để hiển thị các phần biến? – lomaxx

1

Bạn đang cố tạo 2 trang html hoàn toàn riêng biệt với các kiểu giống nhau. Bạn muốn có một cái nhìn riêng. Đừng cố gắng để thông minh các mô hình thiết kế với logic phân nhánh có điều kiện.

Người trợ giúp HTML sẽ không giúp bạn nhiều ở đây, vì dường như bạn sẽ không lặp lại nhiều logic khác hơn là nếu có.

+0

Tất cả tôi có thể nói tôi thậm chí không có logic lặp lại tôi muốn sử dụng trình trợ giúp thay vì sao chép mã. Sao chép mã chỉ gây đau đầu bảo trì và nên được cau mày khi –

+0

Tôi không nghĩ bạn muốn có chế độ xem riêng vì nó sẽ tạo thêm phí bảo trì bổ sung. Tôi sẽ có khuynh hướng đẩy logic trở lại bộ điều khiển và có một chế độ xem sạch – lomaxx

+0

Bạn có thể đặt mã lặp lại trong partials, nhưng hình ảnh lớn có vẻ như bạn muốn có hai chế độ xem riêng biệt, tức là "HTML khác nhau cho người dùng chuyên gia" mã là xấu, làm việc chống lại một mẫu thiết kế là IMO tồi tệ hơn. –

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