2010-03-23 37 views
6

Có được coi là thực tiễn không tốt để có nhiều lượt xem cho cùng một URL trong MVC, dựa trên các vai trò người dùng khác nhau không? Ví dụ: http://www.domain.com/ViewProductID/123 sẽ hiển thị trang sản phẩm "bình thường" cho người dùng thông thường và sẽ hiển thị phiên bản "nâng cao" (thống kê sản phẩm, khả năng chỉnh sửa tiêu đề, v.v ..) cho người nào đó đã đăng nhập với tư cách quản trị viên.MVC - Cùng một URL, nhiều chế độ xem

Nếu thực hành không tốt, tại sao? Nếu nó ok, cách tốt nhất để thực hiện nó là gì? 2 mẫu riêng biệt hoặc 1 mẫu phân tán bằng if..else?

Cảm ơn!

Trả lời

2

Tôi nghĩ rằng bạn nên sửa đổi chế độ xem dựa trên ngữ cảnh; Lúc nào chả vậy. Cho dù bạn làm điều đó nếu .. khác hoặc nhiều tệp aspx thực sự phụ thuộc vào cách nhiều khác nhau. Một vài tùy chọn thay thế:

1) sử dụng Html.RenderAction gọi chống lại một hành động AdminController để nhúng các công cụ, các AdminController có thể trả về kết quả có sản phẩm nào nếu người dùng không phải là một admin

hoặc, tốt hơn:

2) sử dụng trang cái khác dựa trên vai trò/trạng thái của người dùng. Bằng cách này, bạn có thể kéo logic để thiết lập master thành một actionfilter ot mà anh ta thích, và làm điều đó một lần nhưng áp dụng nó bất cứ nơi nào nó có ý nghĩa. Chỉ cần đảm bảo rằng các trang Master thay thế tương thích với các khung nhìn về nội dung của contentplaceholderId.

+0

+1 Câu trả lời hay và chi tiết. – systempuntoout

1

Theo ý kiến ​​của tôi, bạn có cùng một url cho người dùng và quản trị viên. câu hỏi thực sự là khả năng sử dụng cho người dùng của bạn. Điều này có ảnh hưởng gì đến chúng không? Rất nhiều trang web sử dụng nội dung hoặc liên kết bổ sung hiện tại của MVC tùy thuộc vào cấp độ ủy quyền.

Bạn đang sử dụng khung và ngôn ngữ nào? Bạn có thể không cần một mẫu hoàn toàn khác nếu bạn có một cái gì đó giống như một phần xem có sẵn cho bạn.

1

Nếu các trang sẽ không khác biệt đáng kể (nghĩa là chúng hiển thị cùng một dữ liệu, có thể với nhiều hơn cho quản trị viên) thì tôi sẽ nói đặt tất cả mã trong cùng một tệp. Nếu có thể, sử dụng một hệ thống quản lý khả năng dựa trên vai trò để bạn có thể hỏi những câu như sau:

if can? :create, Users do 
    ... 
else 
    ... 
end 

Sau đó, bạn thiết lập khả năng của bạn để quản trị viên và các nhà quản lý có thể vừa tạo người dùng. Bằng cách này, bạn không phải lo lắng về việc người dùng là ai, chỉ những gì người dùng được phép thực hiện.

1

Về cơ bản bạn đang nói về các quyền dẫn đến các trang khác nhau, đây là một việc rất phổ biến. Hãy nghĩ về trang đích mặc định trên Facebook cho 2 người khác nhau.

Triển khai giống như đối với bất kỳ điều gì khác: kết hợp các yếu tố phổ biến nơi bạn có thể sử dụng lại. Sự khác biệt đơn giản có thể chỉ đi vào nếu ... sự khác biệt phức tạp và phức tạp hơn thuộc về các mẫu khác nhau.

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