2013-01-10 32 views
12

Tôi đã có phần web trực quan (được tạo bằng mẫu standart Visual Stuido 2012 từ biểu mẫu "Thêm mục mới") chỉ với một phần tử <div id="newsListDiv" runat="server"></div>. Tôi muốn lập trình thêm điều khiển người dùng của riêng tôi để nó sử dụng đoạn mã sau:Thêm điều khiển người dùng vào phần web trong Sharepoint 2013

protected void Page_Load(object sender, EventArgs e) 
{  
    NewsLine newsLine = Page.LoadControl(@"~/_ControlTemplates/MainTheme/NewsLine.ascx") as NewsLine; 
    newsListDiv.Controls.Add(newsLine); 
} 

Nhưng khi tôi triển khai các giải pháp và thêm phần web để trang nó cho thấy một trang lỗi, nói với tôi rằng các tập tin '/ _ControlTemplates/MainTheme/NewsLine.ascx 'không tồn tại. Nhưng nếu tôi nhìn vào thư mục "C: \ Program Files \ Common Files \ microsoft được chia sẻ \ Web Server Extensions \ 15 \ TEMPLATE \ CONTROLTEMPLATES \ MainTheme" Tôi có thể thấy rằng các tập tin có mặt ở đó. Tôi đã cố gắng đặt mức độ tin cậy thành "Đầy đủ" nhưng có cùng lỗi. Tôi cũng đã cố gắng thêm các điều khiển người dùng trong tập tin ascx như thế này:

<%@ Register Src="~/_controltemplates/MainTheme/NewsLine.ascx" TagPrefix="uc1" TagName="NewsLine" %> 

<div id="newsListDiv" runat="server"> 
    <uc1:NewsLine runat="server" id="NewsLine" /> 
</div> 

Và cách mà một nhận được một lỗi biên dịch: "Cái tên 'InitializeControl' không tồn tại trong bối cảnh hiện nay". Tôi cũng nhận thấy rằng ngay sau khi tôi thêm dòng Đăng ký hoặc Tham chiếu (với đường dẫn đến điều khiển người dùng của tôi) vào tệp .ascx của tôi, tệp .g.cs sẽ trống! Và nó lại lấp đầy lần nữa khi tôi loại bỏ dòng đó. Tôi đã thử nhiều tác phẩm đường dẫn khác nhau như "../_controltemplates/", "/ controltemplates/15 /", v.v. Nhưng không ai trong số họ tạo ra bất kỳ sự khác biệt nào. Tôi đang tuyệt vọng ở đây, xin vui lòng giúp đỡ!

Trả lời

19

Bạn quên thử thêm một tùy chọn nữa. Nó giống nhau khi truy cập thư mục _layouts. Bạn nên chỉ định 15 hive.

Con đường đúng là "~/_ControlTemplates/

NewsLine newsLine = Page.LoadControl(@"~/_ControlTemplates/15/MainTheme/NewsLine.ascx") 
+0

Đã thử rằng một quá, vẫn không có may mắn. Dường như với tôi rằng có một số vấn đề với công cụ tự động tạo tệp .g.cs. Đã cố gắng cài đặt lại VS, nhưng điều đó cũng không giúp được gì. Tôi quyết định không sử dụng UserControls cho bây giờ, nhưng tôi có một ý tưởng rằng nó có thể không hoạt động vì tôi tạo ra thư mục ControlTemplates trong VS không phải là một thư mục được ánh xạ. Gonna kiểm tra về điều đó sau ... – 4tuneTeller

+1

Cùng một vấn đề ở đây, nhưng giải pháp làm việc! Thnx một tấn. – ChiYoung

+0

Nó cũng làm việc cho tôi .. Cảm ơn rất nhiều :)! – Muhammedh

0

Được chạy vào cùng một vấn đề. Tôi đã không nhìn thấy gợi ý cho thêm 15 đến con đường và điều này đã làm việc cho tôi. Các chỉ khác sự khác biệt giữa tài liệu tham khảo của tôi và của bạn là tôi không có ~ lúc bắt đầu./là ký tự đầu tiên

0

Tôi có cùng một vấn đề này chỉ hoạt động khi tôi làm điều đó trong mã phía sau nhưng tôi không nhận được may mắn tring để thêm nó vào ascx giống như bất kỳ điều khiển khác tôi sử dụng! - Thiên Chúa Tại sao tất cả mọi thứ nên được điều này khác nhau trong sharepoin t? !!!!

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