APSX ページの 1 つに Web ユーザー コントロールを実装しようとしていますが、次の警告が引き続き表示されます。
要素 'IntFilter' は既知の要素ではありません。これは、Web サイトにコンパイル エラーがある場合、または web.config ファイルが見つからない場合に発生する可能性があります。
ユーザー コントロールは、aspx ページと同じ Web プロジェクトで定義されます。
質問:
この警告を解決するにはどうすればよいですか (コントロールを別のプロジェクトに移動したくありません)。
また、このコントロールの IntelliSense を有効にして ASPX から FilterTypeSelection プロパティを設定できるようにするにはどうすればよいですか?
「~/FilterControls/IntFilter.ascx」のコード
<%@ Control Language="vb" AutoEventWireup="false" CodeBehind="IntFilter.ascx.vb" Inherits="StaffSupport.Filters.IntegerFilter" %>
<asp:DropDownList ID="typeFilterDropDownList" runat="server">
<asp:ListItem Selected="True" Text ="Any" Value="-1" />
<asp:ListItem Selected="False" Text ="Equal" Value= "0" />
</asp:DropDownList><br />
<asp:TextBox ID="TextBox1" runat="server" /><asp:CheckBox ID="CheckBox1" runat="server" Text="Inclusive" /><br />
<asp:TextBox ID="TextBox2" runat="server" /><asp:CheckBox ID="CheckBox2" runat="server" Text="Inclusive" /><br />
「~/FilterControls/IntFilter.ascx.vb」のコード
Namespace Filters
Public Class IntegerFilter
Inherits System.Web.UI.UserControl
Public Enum NumberFilterTypes As SByte
Any = -1
Equals = 0
End Enum
Public Property FilterTypeSelection As NumberFilterTypes
Get
Dim value As SByte
If Not Integer.TryParse(typeFilterDropDownList.SelectedValue, value) Then
value = -1
End If
Return CType(value, NumberFilterTypes)
End Get
Set(value As NumberFilterTypes)
typeFilterDropDownList.SelectedValue = CSByte(value)
End Set
End Property
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
End Sub
End Class
End Namespace
「OpenCases.aspx」のコード
<%@ Page Title="" Language="vb" AutoEventWireup="false" MasterPageFile="~/StaffSite.Master" CodeBehind="OpenCases.aspx.vb" Inherits="StaffSupport.OpenCases" %>
<%@ Register TagPrefix="filters" TagName="IntFilter" src="~/FilterControls/IntFilter.ascx" %>
<asp:Content ID="bodyContent" ContentPlaceHolderID="cphBody" runat="server">
ID<br />
<filters:IntFilter ID="IntFilter1" runat="server" />
</asp:Content>
「OpenCases.aspx.vb」のコード
Public Class OpenCases
Inherits System.Web.UI.Page
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Page.ViewStateMode = UI.ViewStateMode.Disabled
End Sub
2012/02/21 更新:
"filters" と "filter" のミスマッチを修正。
また、ソリューション エクスプローラーからデザイン ビューのページにコントロールをドラッグすると、必要な参照が追加されます (まだ警告が生成されていました)。ソースビューのページにドラッグすると、要素に href を持つタグが追加されます。
更新 2012/02/21 b:
解決策が見つかりました。以下の私の回答を参照してください。