2009-11-27 64 views
8

Đối với các trang web xuất bản của chúng tôi, chúng tôi sử dụng SPContext.Current.FormContext.FormMode enum để làm việc nếu trang hiện tại đang ở chế độ chỉnh sửa. Tôi đã thấy rằng điều này không hoạt động cho một site nhóm mà tôi hiện đang làm việc. FormMode luôn được đặt thành 'Không hợp lệ'.Làm cách nào để biết trang có đang ở chế độ chỉnh sửa trên trang web không xuất bản

Tuy nhiên, khi tôi nhấp vào chỉnh sửa trang trên trang mẫu, trang sẽ chuyển sang chế độ chỉnh sửa sao cho phải có một cách khác để biết rằng trang đang ở chế độ chỉnh sửa. Vậy làm thế nào tôi có thể biết tôi đang ở chế độ chỉnh sửa cho một trang đang sống trong một site nhóm?

Chúc mừng. Jas.

Trả lời

8

Đối với kịch bản của mình, tôi thấy rằng tôi có thể sử dụng đối tượng WebPartManager để tìm hiểu xem trang hiện tại có đang ở chế độ chỉnh sửa hay không.

Dim wpm As WebPartManager = WebPartManager.GetCurrentWebPartManager(Page) 

result = wpm.DisplayMode.Name.Equals("design", StringComparison.InvariantCultureIgnoreCase) 

Mã trên cho tôi biết trang hiện tại có đang ở chế độ chỉnh sửa hay không, vì vùng webpart đang ở chế độ thiết kế. Khi không ở chế độ thiết kế, DisplayMode thường sẽ là 'Duyệt qua'.

+0

Nó tốt hơn để kiểm tra wpm.DisplayMode.AllowPageDesign vì nó bao gồm cả "thiết kế" và "chỉnh sửa" trường hợp - trong khu phần trường hợp web đầu tiên được trong chế độ thiết kế, trong thứ hai của mình các phần web ở chế độ chỉnh sửa - cả hai trường hợp đều cho biết rằng trang đang ở chế độ chỉnh sửa – Andrey

2

SPContext.Current.FormContext.FormMode không thể được sử dụng trong OnInit; nó luôn luôn là không hợp lệ ở đó. Thử lại sau nhé; Tôi sử dụng nó trong OnPreRender, ví dụ.

WebPartManager.DisplayMode có thể được sử dụng để kiểm tra xem một phần trình chỉnh sửa có đang hoạt động trong vùng biên tập hay không. Nó là một điều bổ sung - bạn có thể có trang trong chế độ chỉnh sửa mà không có điều đó. Nó phụ thuộc vào những gì bạn muốn kiểm tra trong kịch bản của bạn.

Nhân tiện, hãy sử dụng các thành viên chỉ đọc để so sánh, như: wpm.DisplayMode == WebPartManager.EditDisplayMode.

--- Ferda Prantl

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