这里不允许创建具有以下错误的NumericTextBox,因为它不扩展类'System.Web.UI.Page'

时间:2011-04-02 17:09:00

标签: asp.net

我知道这是一个经典错误。我试图理解错误,不幸的是我不能。我也做了谷歌搜索,其中大部分是用C#而不是用VB编写的。

我要做的是创建一个数字文本框,输入的数字将自动转换为货币格式。

输入:1000
OUTPUT显示:1,000

我的项目只有以下2个文件。

1。 text.aspx

<%@ Page Language="vb" src="cls/NumericTextbox.aspx.vb" AutoEventWireup="false"     inherits="daisystory.com.NumericTextBox" %>  
<html xmlns="http://www.w3.org/1999/xhtml" >  
    <body>  
        <form id="form1" runat="server">  
            <asp:TextBox id="mytext" text="1000" onKeyPress="ValidateNumeric()" runat="server" />  
        </form>  
    </body>  
</html>  

2。 NumericTextbox.aspx.vb

Imports System  
Imports System.Web.UI  
Imports System.Web.UI.Page  
Imports System.Web.UI.WebControls  
Imports System.ComponentModel

Namespace daisystory.com  
    Public Class NumericTextBox  
    Inherits TextBox

        Protected Overrides Sub OnPreRender(ByVal e As EventArgs)
            Attributes.Add("onKeyPress", "ValidateNumeric()")

            If Not (Page.IsClientScriptBlockRegistered("ValidateNumericScript")) Then           
                Page.RegisterClientScriptBlock("ValidateNumericScript", "<script language='javascript'>" & chr(13) & _
                    "function ValidateNumeric(){" & chr(13) & _
                    "var keyCode = window.event.keyCode;" & chr(13) & _
                    "if (keyCode > 57 || keyCode < 48)" & chr(13) & _
                    "window.event.returnValue = false;}" & chr(13) & _
                    "</" & _
                    "script>")
            End If
            MyBase.OnPreRender(e)
        End Sub

        public overrides Property Text As String
            Get
                return(MyBase.Text)
            End Get
            Set
                MyBase.Text = Convert.ToInt32(value).ToString()
            End Set
        End Property
    End Class
End Namespace

AND HERE是错误: -

Parser Error Message: 'daisystory.com.NumericTextBox' is not allowed here because it does not extend class 'System.Web.UI.Page'.

Source Error:  
Line 1:  <%@ Page Language="vb" src="cls/NumericTextbox.aspx.vb" AutoEventWireup="false"inherits="daisystory.com.NumericTextBox" %>

我该怎么办? 非常感谢您的帮助!!!

1 个答案:

答案 0 :(得分:0)

您的页面不是您要扩展的内容。您想要一个扩展的控件。该页面应该是一个普通的aspx页面文件,其中包含registration for the new user control而不是asp:textbox,您可以将新控件放入其中。

Here's an article for user controls