2017-05-03 58 views
7

Tôi đang xem một số mã đã phá vỡ việc lưu các thay đổi của một mục Danh sách trong SP2010. Trong hàm khởi tạo của Event Receiver, HttpContext đang được lưu trữ dưới dạng biến cục bộ, sau đó trong phần ItemUpdating ở cuối tham số truy vấn chứa url trả về được truy xuất và chuyển SPUtility.Redirect (...). Điều này có tác dụng hủy bất kỳ thay đổi nào được thực hiện trong biểu mẫu chỉnh sửa. Vì vậy, sau các kịch bản mà tôi đã tìm thấy trực tuyến, tôi lưu trữ HttpContext như một đối tượng lớp tĩnh và chuyển hướng trong sự kiện ItemUpdated và các chỉnh sửa hiện được duy trì tiếp theo là chuyển hướng đến nơi chúng ta đang mong đợi.Chuyển hướng trong Sharepoint 2010 Bộ nhận sự kiện

Tôi có một mối quan ngại với việc lưu trữ HttpContext của người dùng cụ thể dưới dạng tĩnh trên lớp có khả năng bị tấn công nếu người dùng khác thực hiện hành động tương tự giữa người dùng thời gian 1 đặt bối cảnh ban đầu và trước chuyển hướng. Người dùng 2 sẽ ghi đè ngữ cảnh và có các vấn đề tiềm ẩn.

Tùy chọn duy nhất khác mà tôi có thể nghĩ là lưu trữ một từ điển tĩnh trong đó khóa là id người dùng, sau đó xóa mục nhập ngay trước khi chuyển hướng để không để các cá thể HttpContext bị hỏng.

Vì vậy, hãy xem giải pháp được chấp nhận từ here phản hồi đầu tiên bởi các trạng thái servy42 The fact that it works for a few trivial test cases at first doesn't make it a viable solution. nhưng không đề xuất giải pháp khả thi.

Có một tùy chọn khác best approach may be changing Save Button in ribbon such that when clicked, a ECMA script first save your Item, then redirect to other page, or open other page in dialog. được đề xuất thêm nữa nhưng đó có phải là cách khác để đi không?

Tôi khá mới đối với SP và chỉ cố gắng điều hướng qua vô số cách làm sai với kiến ​​thức hạn chế của mình, trong khi không may bị mắc kẹt với SP2010.

Bất kỳ suy nghĩ nào về cách thực hiện việc này?

============

Edit: Thêm thông tin theo yêu cầu

Vì vậy, có hai trang web một nói được gọi là A mà sẽ có một trang web phụ gọi là B. A có một Danh sách và thêm một mục vào danh sách đó sẽ kích hoạt bộ thu sự kiện tạo trang phụ B và các nội dung liên quan khác. Nếu tôi sửa đổi B "mục" từ danh sách các Bs của SharePoint thì tôi không cần phải chuyển hướng và quay trở lại danh sách là tốt. Nếu tôi đang tìm kiếm và biểu đồ Gantt được hiển thị gọn gàng trên A liệt kê các Bs nếu tôi chỉnh sửa B sau khi nhấp vào Lưu, chúng tôi cần quay lại A. Nếu tôi ở trên B, cũng có nút chỉnh sửa để tôi muốn quay lại B sau khi chỉnh sửa và nhấp vào lưu.

Vì vậy, chúng tôi có nguồn = được nối vào khi chúng tôi chuyển đến màn hình chỉnh sửa. Từ một số đọc tôi đã thực hiện có vẻ như SharePoint sẽ chọn lên và chuyển hướng. Một trong các trường trên trang chỉnh sửa là url tương đối bên dưới trang web A và nếu thay đổi đó thì url chuyển hướng sẽ không còn hợp lệ và ném 404 để chúng tôi thay thế đường dẫn con B cũ bằng giá trị mới được nhập. Nhưng sau đó chúng tôi cần mã để chuyển hướng đến vị trí mới.

+0

Mục đích của người nhận sự kiện đó là gì? Là nó để xác nhận hợp lệ dữ liệu mục danh sách? – Vaibhav

+0

Tôi sẽ đặt câu hỏi @ Vaibhav thứ hai và thêm mục đích của chuyển hướng là gì? Tùy thuộc vào ngữ cảnh, bạn có thể xử lý chuyển hướng tốt hơn bằng cách sử dụng JavaScript phía máy khách thay vì C# phía máy chủ. – Thriggle

+0

Tôi đã thêm một số chi tiết khác. Cảm ơn bạn đã trả lời –

Trả lời

2

Tôi không hoàn toàn chắc chắn liệu tôi có hiểu chính xác yêu cầu của bạn hay không. Nhưng tôi sẽ thử. Chỉ cần một bản tóm tắt nhanh về những gì tôi đã hiểu (sửa tôi nếu tôi sai ...):

  • Bạn có một gốc Web trong một bộ sưu tập trang web với một danh sách
  • Mỗi mục trong danh sách đó tương ứng với một subsite sẽ được tạo ra trên tạo Danh sách mục (ER) dưới gốc Web như một subsite
  • Danh sách các mục có thể được chỉnh sửa từ cả hai danh sách trong các trang web gốc cũng như từ các subsite nó bản đồ để
  • On chỉnh sửa từ subsite bạn muốn quay trở lại subsite sau khi tiết kiệm

Tiếp cận của tôi sẽ là:

  1. Thực hiện theo các bước được mô tả trong bài viết này SP Dialog and List Forms
  2. mở một hộp thoại trên subsite liên kết đến hình thức chỉnh sửa của trang web gốc.
  3. Sau khi lưu người dùng tự thấy mình đã ở đâu

Hy vọng điều này sẽ giúp ... Chúc mừng!

Chỉnh sửa: Chỉ cần đọc yêu cầu về thay đổi url. Tạo Biểu mẫu Chỉnh sửa tùy chỉnh mà bạn nâng cao với một số js chuyển giá trị trở lại trang gốc ->Parameters in dialogs. Sau đó, bạn có thể phản ứng tương ứng trong cuộc gọi lại javascript và chuyển hướng đến url mới.

+0

Dang Tôi không có thời gian để dùng thử và xác nhận cách tiếp cận là thời gian cho tiền thưởng sắp hết hạn. Từ những gì bạn đã mô tả tôi nghĩ rằng tôi có thể nhìn thấy những gì bạn có nghĩa là vì vậy tôi sẽ chấp nhận câu trả lời này trước. Cảm ơn đống đề xuất. –

+0

Bạn chỉ có thể chuyển lại các giá trị nếu nó là phương thức không? Hệ thống hiện tại của chúng tôi không phải là phương thức để tự hỏi liệu tôi có phải sửa đổi mọi thứ để hoạt động theo cách bạn đã đề xuất không? –

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