5

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>

警告が表示されます'要素WeeklyEventsCalendarは既知の要素ではありません。これは、Webサイトにコンパイルエラーがある場合、またはweb.configファイルがない場合に発生する可能性があります。しようとしています

過去にファイルの場所を誤って入力したときのように、「ファイルが見つかりません」というエラーは発生しません。

ブラウザにaspxページを読み込もうとすると、エラーCS0115が発生します:'ASP.usercontrols_weeklyeventscalendar_ascx.FrameworkInitialize()':オーバーライドする適切なメソッドが見つかりません

私のコードのどこにもそのような関数を定義しようとしないので、これはさらに混乱します。

これは本当に簡単なはずです。どこが間違っているのですか?

4

2 に答える 2

5

問題は、Calendar コントロール (サーバー コントロール) をユーザー コントロール (ASCX 拡張機能に基づく) から継承しようとしていることにあると思います。これはできません。Calendar コントロールから継承する場合は、サーバー コントロールを作成する必要があります。

サンプルコードが必要な場合はお知らせください。

于 2008-10-09T17:52:03.217 に答える
4

ブライアントはそれに当たった。既存のコントロールをカスタマイズするだけで、ユーザーコントロールにカレンダーのインスタンスを埋め込み、そこから必要なプロパティを公開することだけを検討している場合は、検討する必要があります。このようにして、ユーザーコントロールは必要なすべてのカスタマイズを処理でき、消費するアプリケーションに戻る限られたインターフェイスのみを提供できます。(これは継承ではなく構成です。)

asp:Calendarから完全に派生する必要がある場合は、Calendarコントロールから派生する標準クラスを作成してから、カスタマイズを実行する必要があります。ただし、そのためのUIデザインはありません。すべて、カスタムコードである必要があります。(また、出力されるHTMLを変更する必要がある場合は、それらのカスタムストリームも書き出す必要があります。これは、カレンダーコントロールを使用すると、面倒な作業になる可能性があります。)

于 2008-10-09T18:04:23.563 に答える