2008-10-09 32 views
5

Tôi đang cố gắng tạo điều khiển lịch tùy chỉnh kế thừa từ điều khiển người dùng lịch được tích hợp của ASP.Net.Thừa kế từ điều khiển web ASP.NET: "Phần tử <name> không phải là phần tử đã biết"

file code-behind cho kiểm soát của tôi trông như thế này:

public partial class WeeklyEventsCalendar : Calendar 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 

    } 
} 

và biên dịch tốt.

Tuy nhiên, khi tôi cố gắng đặt điều khiển quen thuộc của tôi trên một trang aspx:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="testbed.aspx.cs" Inherits="testbed" %> 
<%@ Register Src="UserControls/WeeklyEventsCalendar.ascx" TagName="WeeklyEventsCalendar" 
    TagPrefix="mvs" %> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head id="Head1" runat="server"> 
    <title>Untitled Page</title> 
    <link href="~/css/VitalSignsStyleSheet.css" type="text/css" rel="stylesheet" /> 
</head> 
<body> 
    <div> 
     <mvs:WeeklyEventsCalendar runat="server" /> 
    </div> 
</body> 
</html> 

tôi nhận được một cảnh báo 'Yếu tố WeeklyEventsCalendar không phải là một yếu tố được biết đến. Điều này có thể xảy ra nếu có lỗi biên dịch trong trang web hoặc thiếu tệp web.config. ' Đang cố gắng

Tôi không nhận được bất kỳ loại lỗi 'không tìm thấy tệp' nào như tôi có trong quá khứ khi tôi nhập sai vị trí của tệp.

Khi tôi cố gắng để tải trang aspx trong một trình duyệt, tôi nhận được CS0115 lỗi: 'ASP.usercontrols_weeklyeventscalendar_ascx.FrameworkInitialize()': không có phương pháp thích hợp tìm thấy để ghi đè

Đó là khó hiểu hơn, vì đâu trong mã của tôi để tôi cố gắng xác định một hàm như vậy.

Điều này thực sự đơn giản. Tôi làm sai ở đâu?

+0

Điều gì xảy ra khi bạn đưa phương thức Page_Load ra ? –

+0

Chính xác điều tương tự. Đề nghị tốt mặc dù! – Ryan

Trả lời

4

Bryant nhấn vào nó. Một điều bạn có thể xem xét nếu tất cả những gì bạn đang làm là tùy chỉnh điều khiển hiện có đang nhúng một cá thể của lịch vào điều khiển người dùng của bạn và hiển thị các thuộc tính bạn cần từ nó. Bằng cách này, điều khiển người dùng của bạn có thể xử lý tất cả các tùy chỉnh cần thiết và cũng chỉ cung cấp một giao diện hạn chế cho ứng dụng tiêu thụ. (Đây là thành phần thay vì thừa kế.)

Nếu bạn thực sự cần hoàn toàn lấy được từ asp: Lịch, bạn cần tạo một lớp tiêu chuẩn xuất phát từ điều khiển Lịch và sau đó thực hiện các tùy chỉnh của bạn. Bạn sẽ không có thiết kế giao diện người dùng cho điều đó, tuy nhiên - mọi thứ bạn cần sẽ cần phải là mã tùy chỉnh. (Và nếu bạn cần thay đổi HTML đang được phát ra, bạn cũng sẽ cần phải viết những luồng tùy chỉnh đó - điều đó, với điều khiển lịch, có thể gây đau đớn.)

+0

cảm ơn vì đã phác thảo những thuận và chống triệt để. Tôi sẽ xem xét thêm về điều này và xem những gì phù hợp với nhu cầu của tôi là tốt nhất. – Ryan

5

Tôi nghĩ rằng vấn đề là bạn đang cố kế thừa điều khiển Lịch (điều khiển máy chủ) từ điều khiển người dùng (dựa trên phần mở rộng ASCX của bạn). Bạn không thể làm điều này. Nếu bạn muốn kế thừa từ điều khiển Lịch thì bạn cần tạo điều khiển máy chủ.

Hãy cho tôi biết nếu bạn cần một số mã mẫu.

+0

Mã mẫu sẽ đẹp. –

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