2014-01-25 115 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