Asp.net 将值插入sql server:未声明控件

Asp.net 将值插入sql server:未声明控件,asp.net,vb.net,Asp.net,Vb.net,标题听起来很简单,但这里有一些细节 我得到了一个旧网站来扩展一下。这是一个VB.NET实现,它是最初的编码者的第一个站点,所以很多高手都在努力让它工作 网站摘要: 母版页设计,带有oAuth登录页。主页是记录的分页,根据用户是否登录,会显示一个单独的按钮进行编辑。到目前为止,没什么大不了的,它很有效,一切都很好 现在,当我们深入到编辑页面时,产品所有者希望能够向记录中添加注释。看起来很容易,除了实际插入,其他所有CRUD都完成了 我在页面底部添加了一个文本区域和一个按钮。insert事件正在工作

标题听起来很简单,但这里有一些细节

我得到了一个旧网站来扩展一下。这是一个VB.NET实现,它是最初的编码者的第一个站点,所以很多高手都在努力让它工作

网站摘要:
母版页设计,带有oAuth登录页。主页是记录的分页,根据用户是否登录,会显示一个单独的按钮进行编辑。到目前为止,没什么大不了的,它很有效,一切都很好

现在,当我们深入到编辑页面时,产品所有者希望能够向记录中添加注释。看起来很容易,除了实际插入,其他所有CRUD都完成了

我在页面底部添加了一个文本区域和一个按钮。insert事件正在工作,并且正在将虚拟记录放入数据库中

但是,当我尝试获取textarea的值并将其放入查询时,失败就开始了

<html xmlns="http://www.w3.org/1999/xhtml">
<script language="VB" runat="server" >
Protected Sub NewNoteButton_Click(sender As Object, e As System.EventArgs)
  '    Dim myStringResult As String = NewNoteTextArea.InnerHtml
MsgBox("Here1")
Dim constr As String = ConfigurationManager.ConnectionStrings("XXXXXConnectionString").ConnectionString
Using con As New SqlConnection(constr)
  Using cmd As New SqlCommand("INSERT INTO EasementNote ([RE_Number], [noteuser], [note]) VALUES (@RE_Number, @NoteUser, @Note)")
    cmd.Parameters.AddWithValue("@RE_Number", "test")
    cmd.Parameters.AddWithValue("@NoteUser", "test")
    cmd.Parameters.AddWithValue("@Note", "more testing")
    cmd.Connection = con
    con.Open()
    cmd.ExecuteNonQuery()
    con.Close()
  End Using
End Using
MsgBox("here2")
End Sub
</script>    
 <head runat="server">
   <title></title>
 </head>

受保护的子NewNoteButton\u单击(发件人作为对象,e作为System.EventArgs)
'Dim myStringResult As String=NewNoteTextArea.InnerHtml
MsgBox(“此处1”)
Dim constr As String=ConfigurationManager.ConnectionString(“XXXXX ConnectionString”).ConnectionString
使用con作为新的SqlConnection(cont)
使用cmd作为新的SqlCommand(“插入EasementNote([RE_Number],[noteuser],[note])值(@RE_Number,@noteuser,@note)”)
cmd.Parameters.AddWithValue(“@RE_Number”,“test”)
cmd.Parameters.AddWithValue(“@NoteUser”,“test”)
cmd.Parameters.AddWithValue(“@Note”,“更多测试”)
cmd.Connection=con
con.Open()
cmd.ExecuteNonQuery()
con.Close()
终端使用
终端使用
MsgBox(“此处2”)
端接头
这里是我的HTML代码

  <asp:TableFooterRow Width="100%">
    <asp:TableCell HorizontalAlign="center" ColumnSpan="2">
      <asp:LinkButton ID="EditButton" runat="server" CausesValidation="False" CommandName="Edit" Text="Edit" />&nbsp;
      <asp:LinkButton ID="NewButton" runat="server" CausesValidation="False" CommandName="New" Text="New" />
    </asp:TableCell>
    <asp:TableCell HorizontalAlign="center" ColumnSpan="1">
      <asp:TextBox id="NewNoteTextArea" TextMode="multiline" Columns="40" Rows="3" runat="server" />&nbsp;&nbsp;&nbsp;
      <asp:Button runat="server" ID="NewNoteButton" Text="Insert Note" OnClick="NewNoteButton_Click"/>
    </asp:TableCell>
  </asp:TableFooterRow>

我真的很困惑为什么我会收到这个错误信息。顺便说一句-没有代码隐藏页面。。。不知道为什么,但是没有,但是当我添加了一个,并将button click事件移动到其中时,button click无法解析

谢谢查看。

您应该使用textbox控件的属性值,而不是InnerHtml

Dime mySyting as String = NewNoteTextArea.Text

由于控件位于另一个服务器控件内,因此需要使用FindControl在代码中访问该控件,如

Dim txtNote As TextBox = DirectCast(Me.FormView1.FindControl("NewNoteTextArea"), TextBox) 

@pithhelmet是表单标签中的文本框吗?这段代码是否也在同一页面的代码隐藏文件中?它隐藏在asp:FormView中,所有真正的“代码”都在同一页面上,是的,所有模板都位于表单元素中,但是sub在表单之外element@pithhelmet在这种情况下,您必须阅读此帖子,因此帖子位于服务器控件内,不应使用FindControl引用,例如在这种情况下,FindControl也会因“未声明”错误而失败。查看您的代码和注释,您的文本框似乎位于表中(服务器控件)这反过来又在FormView中。如果是这样的话,那么你必须使用FindControl遵循相同的层次结构,如FormView>Table>FooterRow>Cell>TextBox,就像上面给出的asp.net论坛链接(选中多个FindControl)haraman一样-请作为答案发布,这样你就得到了分数。这就是成功的原因。。。Dim TextBoxText As TextBox=DirectCast(Me.FormView1.FindControl(“NewNoteTextArea”),TextBox)