【发布时间】:2012-02-18 04:47:34
【问题描述】:
我正在尝试在我的一个 APSX 页面中实施 Web 用户控件,但不断收到以下警告:
元素“IntFilter”不是已知元素。如果网站中存在编译错误,或者缺少 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 年 2 月 21 日更新:
修复了“过滤器”与“过滤器”未匹配的问题。
另外值得注意的是,如果您将控件从解决方案资源管理器拖到设计视图中的页面,它将添加您需要的引用(尽管它仍在为我生成警告)。如果你将它拖到源视图中的页面,它会在元素中添加一个带有 href 的标签。
2012 年 2 月 21 日更新 b:
找到了解决办法,请看下面我的回答。
【问题讨论】:
-
我认为您需要将此控件的引用添加到您的项目中
标签: asp.net vb.net visual-studio-2010 webusercontrol