2012-04-18 26 views
5

Không nghi ngờ gì tôi đang thiếu một cái gì đó rất rõ ràng ở đây - nhưng tôi mới để sharepoint vì vậy hãy chịu với tôi.Trường hợp mã phía sau cho các trang aspx bổ sung?

Tôi đã thêm thành công trang cái, tạo loại nội dung và đã tạo trang aspx cho loại nội dung tùy chỉnh của tôi - nhưng tôi không thể tìm thấy tệp cs của nó !?

Có cách nào khác trong đó mã-đằng sau được triển khai trong các giải pháp chia sẻ không? Nó có vẻ tương tự khi tạo điều khiển. Tôi được sử dụng để phát triển ứng dụng web tiêu chuẩn asp. Net C# là tất cả các trang aspx đi kèm với các tập tin mã phía sau 'như là tiêu chuẩn.'

Cảm ơn.

Trả lời

5

Trong SharePoint, bạn có thể có một lớp mã-đằng sau, nhưng nó cần phải được trong một hội đồng, không phải trong một tập tin aspx.cs mã phía sau.

Sử dụng Visual Studio 2010, Trang chỉ thị cho trang aspx của bạn sẽ trông như thế này:

<%@ Page 
    Language="C#" 
    DynamicMasterPageFile="~masterurl/default.master" 
    Inherits="MyNamspace.MyPage, $SharePoint.Project.AssemblyFullName$" 
    %> 

Sau đó bạn có thể tạo ra một lớp MyNamspace.MyPage và làm tất cả những gì bạn sẽ làm trong một code-behind tập tin thông thường.

Nếu bạn xem qua các trang aspx hộp trong thư mục 14 hive \ TEMPLATE \ LAYOUTS, bạn sẽ thấy, trong khi một số trang có mã nội tuyến (được cho phép trong bố cục), hầu như mọi trang được thừa hưởng từ một lớp trong một trong các hội đồng SharePoint.

+0

Cảm ơn rất nhiều về câu trả lời của bạn Rich - đánh giá cao nó. Vậy tại sao điều này lại khác với các dự án tiêu chuẩn asp .net?Tại sao có tất cả điều này rối tung xung quanh như trái ngược với các mã-đằng sau các lớp học sắp tới 'như là tiêu chuẩn'? –

+0

Bởi vì các trang SharePoint có thể được thêm/sửa đổi trong SharePoint Designer và thậm chí thông qua trình duyệt, mã nội tuyến và mã-đằng sau trang không được phép vì lý do an toàn, hiệu suất và thậm chí là chức năng. Để biết thêm thông tin về sự khác biệt, hãy xem [ASP.NET vs SharePoint: Phát triển trang] (http://msdn.microsoft.com/en-us/library/ff512772.aspx) –

+0

Nhận lỗi 'Không thể tải assembly' $ SharePoint.Project.AssemblyFullName $ '. Hãy chắc chắn rằng nó được biên dịch trước khi truy cập trang. ”Tôi đã thêm tệp .cs vào thư mục chứa tệp aspx của tôi. Tôi cũng mới với SP. – shashwat

1

Tôi khuyên bạn nên hỏi điều này trong trang web dành riêng cho SharePoint. Bạn có thể tìm thấy nó here.

Nhưng trả lời bạn câu hỏi, không có mã nào có sẵn cho bạn trong trang SharePoint, ít nhất là trong MOSS 2007. Không chắc chắn về chính xác SharePoint 2010, nhưng phải giống nhau.

+0

Cảm ơn Dante, đánh giá cao phản hồi. –

2

Code-Behind bị ẩn theo thiết kế từ cả phiên bản 2007 và 2010. Xem here để bật tính năng này trên cơ sở cho mỗi vị trí (PageParserPath).

Bạn sẽ tốt hơn về lâu dài về mặt hỗ trợ, bảo trì và quản lý để tuân thủ quy ước trong SharePoint và sử dụng điều khiển thay vì mã sau nếu bạn có thể.

+0

Cảm ơn rất nhiều Paul! Có bằng tất cả các phương tiện - Tôi sẽ làm những gì là thực hành tốt nhất liên quan đến phát triển sharepoint - Tôi chỉ tự hỏi tại sao nó là như vậy. Tôi rõ ràng đã sử dụng C# rất nhiều để thêm chức năng phía máy chủ vào các trang của tôi, vì vậy bây giờ chuyển tất cả trách nhiệm sang các điều khiển web có vẻ xa lạ với tôi - và tôi thực sự không thể hiểu tại sao nó lại xảy ra. Tôi sẽ tiếp tục đọc anyway, cảm ơn một lần nữa. –

2

bạn nên mở trang sharepoint .aspx trong trình thiết kế bổ sung và thêm inherit câu lệnh với lớp .cs của bạn.

cái gì đó như:

<%@ Page Language="C#" MasterPageFile="~masterurl/default.master" Inherits="Namespace.ClassName,Namespace,Version=1.0.0.0, Culture=neutral, PublicKeyToken=tokenid" %> 

một điều là vẫn như trước @ trả lời của Paul bạn nên kích hoạt nó trên một cơ sở cho mỗi vị trí (PageParserPath).

+0

Nhưng tôi giả định rằng việc sử dụng code-behind là 'chán nản' (hoặc ít nhất không được khuyến khích như thể làm việc trong một giải pháp asp .net chuẩn) vì chúng ta phải đi đến các biện pháp bổ sung để kích hoạt nó, đây có phải là đúng? Cảm ơn rất nhiều vì câu trả lời của bạn @Jigs. –

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