我正在尝试创建一个继承自ASP.Net内置日历用户控件的自定义日历控件。
我的控件的代码隐藏文件如下所示:
public partial class WeeklyEventsCalendar : Calendar
{
protected void Page_Load(object sender, EventArgs e)
{
}
}
编译好。
但是,当我尝试将自定义控件放在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>
我收到警告'Element WeeklyEventsCalendar不是已知元素。如果网站中存在编译错误,或者缺少web.config文件,则会发生这种情况。'尝试
我没有得到任何类型的'找不到文件'错误,就像我错误输入文件的位置一样。
当我尝试在浏览器中加载aspx页面时,出现错误CS0115:'ASP.usercontrols_weeklyeventscalendar_ascx.FrameworkInitialize()':找不到合适的方法来覆盖
哪个更令人困惑,因为我的代码中没有任何地方可以尝试定义这样的函数。
这应该很简单。我哪里错了?
答案 0 :(得分:5)
我认为问题在于您尝试从用户控件(基于ASCX扩展)继承Calendar控件(这是一个服务器控件)。你不能这样做。如果要从Calendar控件继承,则需要创建服务器控件。
如果您需要一些示例代码,请告诉我。
答案 1 :(得分:4)
如果您确实需要完全从asp:Calendar派生,那么您需要创建一个派生自Calendar控件的标准类,然后执行自定义。但是,你没有UI设计 - 你所做的一切都需要是自定义代码。 (如果你需要更改发出的HTML,你还需要编写那些自定义流 - 这些,使用日历控件,可能会很痛苦。)