2014-01-25 73 views
0

我正在开发Visual Studio Web开发人员的一些.NET代码,并遇到问题。当我双击而不是加载一个子过程在设计视图按钮,它的作用是突出这一点:<asp:Button ID="btnEnter" runat="server" Text="Enter" onclick="btnEnter_Click" />Visual Basic子程序问题

当我尝试运行只是为了看看会发生什么,我得到这个错误: 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

我试图进入该manaully但关键字不会变成蓝色或任何种类的颜色,当我运行它,它只是显示为与我的其他网页表单文本元素。这里是我到目前为止有:

<%@ 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 

回答

2

Page声明引发的事件似乎是说你正在使用inline风格:

<%@ Page Title="Home Page" Language="VB"%> 

这意味着你的代码/应在aspx文件本身的是script runat="server"标签:

<%@ 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声明这样的网站(网页应用它会说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 

“修复” 是给你:

  • 选择你要哪种模式编写代码:inlinecode-behind
  • 声明Page适用伊利
  • inline,你的代码将在aspx文件本身
  • code-behind,你的代码将生活,并应在页面Class file内进行封装。
    • Page声明实际上是这么说的:
      • CodeFile="foo.aspx.vb"是其中的代码是
      • Inherits="foo"是(Partial Class foo
+0

哇,谢谢。我不相信我忘了脚本支架! – Tim

0

试试这个

Private Sub btnEnter_Click(sender As Object, e As System.EventArgs) Handles btnEnter.Click 

End Sub 

这里,btnEnter_Click是您的活动名称,并使用手柄关键字在过程声明的末尾以使其处理由一个对象变量

+0

我补充说,该文件中的Partial Class文件到表单开始之前的Default.aspx页面,但在<%@ Page Title ..%>之后,仍然未被识别为关键字,当我尝试运行它时,仍然出现错误。我试图把它放在Default.aspx.vb文件中,它识别出关键字等,但是我不知道你是否可以引用表单ID,因为它认为我使用了未声明的变量。 – Tim

+0

你可以上传该代码..?你实际上已经尝试过。 – Dharmesh

+0

我创建了一个新的“Visual Basic ASP.NET网站”,并具有文件about.aspx,about.aspx.vb,Default.aspx,default.aspx.vb,global.asax,site.master,site.master。 vb和web.config。我试图将我刚刚创建的C#代码翻译成VB和C#,我只是在Default.aspx文件中写了我的代码,其中声明了表单和元素 – Tim