我正在为Visual Studio Web开发人员中的一些.NET代码工作,我遇到了问题。当我双击设计视图中的一个按钮时,它不是加载子制作,而是要突出显示:<asp:Button ID="btnEnter" runat="server" Text="Enter" onclick="btnEnter_Click" />
当我尝试运行时只是为了查看发生了什么,我会得到这个错误: Line 8: <asp:Button ID="btnEnter" runat="server"
Compiler Error Message: BC30456: 'btnEnter_Click' is not a member of 'ASP.default_aspx'.
如果我删除onclick="btnEnter_Click"
并运行它,则可以使用。但是,无论哪种方式,当我双击按钮/元素时,它是否应该为我创建一个看起来像类似的子过程? Protected Sub TextBox1_TextChanged(sender As Object, e As EventArgs)
End Sub
我已经尝试输入该功能,但是关键字不会变成蓝色或任何颜色,当我运行它时,它只是在WebForm上显示出具有其他元素的文本。这是我到目前为止的一切:
<%@ Page Title="Home Page" Language="VB"%>
<form id="form1" runat="server">
<asp:Label ID="Label1" runat="server" Text="Enter a person's name below"></asp:Label>
<p>
<asp:TextBox ID="txtStudentName" runat="server"></asp:TextBox>
</p>
<p>
<asp:Button ID="btnEnter" runat="server"
Text="Enter" onclick="btnEnter_Click" />
</p>
<p>
<asp:Button ID="btnDisplay" runat="server" Text="Display all and exit" />
</p>
<p>
<asp:Label ID="lbl2" runat="server" Text=" "></asp:Label>
</p>
<p>
<asp:Label ID="lbl3" runat="server" Text=" "></asp:Label>
</p>
<p>
<asp:Label ID="lbl4" runat="server" Text=" "></asp:Label>
</p>
<p>
<asp:Label ID="lbl5" runat="server" Text=" "></asp:Label>
</p>
</form>
编辑:
当我在default.aspx.vb文件中输入代码时,它突出显示了关键字等,但是它无法引用我在设计视图中创建的元素。
部分类_DEFAULT 继承system.web.ui.page
结束类
Class Lab1
Protected Sub TextBox1_TextChanged(sender As Object, e As EventArgs)
End Sub
Public Const length As Integer = 3
Shared counter2 As Integer = 0
Public Shared studentList As String() = New String(2) {}
Protected Sub btnEnter_Click(sender As Object, e As EventArgs)
Label1.Text = "Enter a person's name"
Dim studentName As [String] = txtStudentName.Text
If studentList.Length <= length Then
If txtStudentName.Text <> "" Then
Dim match As [Boolean] = True
Dim i As Integer = 0
While counter2 >= i
If studentList(i) IsNot Nothing Then
If studentList(i).ToUpper() = txtStudentName.Text.ToUpper() Then
match = False
Label1.Text = "This name has already been used"
End If
End If
i += 1
End While
If match = True Then
studentList(counter2) = txtStudentName.Text
counter2 += 1
End If
End If
End If
End Sub
End Class
您的Page
声明似乎说您正在使用inline
样式:
<%@ Page Title="Home Page" Language="VB"%>
这意味着您的代码在 aspx
中应该是在 script runat="server"
tag中:
<%@ Page Language="VB" %>
<!DOCTYPE html>
<script runat="server">
Protected Sub Button1_Click(sender As Object, e As EventArgs)
'Do something
End Sub
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Button" />
</div>
</form>
</body>
</html>
但是,您的其他代码表明您似乎要使用code-behind
模型,其中有.vb
文件(例如foo.aspx.vb
)
Page
是这样声明的,对于网站而言(对于Web applications ,它将说CodeBehind="foo.aspx.vb"
):
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="foo.aspx.vb" Inherits="foo" %>
- 您会在项目中找到
foo.asp.vb
文件 - 它的班级名称将是您的文件名称(foo)
- 您的代码应范围范围范围(我不确定上面的帖子中的
Class Lab1
是什么。
foo.aspx.vb
:
Partial Class foo
Inherits System.Web.UI.Page
Protected Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
'Do something
End Sub
End Class
"修复"适合您:
- 选择要编写代码的模型:
inline
或code-behind
- 正确声明
Page
- 对于
inline
,您的代码将在ASPX文件本身中 - 对于
code-behind
,您的代码将使用,应封装在页面的Class file
中。-
Page
声明实际上是这样说的:-
CodeFile="foo.aspx.vb"
是代码为
的文件 -
Inherits="foo"
是文件(Partial Class foo
)中的Partial Class
-
-
尝试此
Private Sub btnEnter_Click(sender As Object, e As System.EventArgs) Handles btnEnter.Click
End Sub
在这里, btnenter_click 是您的事件名称,并在过程声明结束时使用 handles 关键字,以使其处理由对象变量