如何在asp.net中访问动态创建的HTML控件值

时间:2018-05-14 16:56:11

标签: html asp.net vb.net

我在Page load上动态创建了几个HTML控件。 我的代码看起来像这样:

Protected Sub Page_Load(sender as Object, e As EventArgs) Handles Me.Load
  Dim sb As New StringBuilder
  Dim i as Integer = 0
  sb.Append("<table class ='tabledata' id='tblContent'>")
    For Each item As myObject In myList
        i += 1
        sb.Append("<tr><td>")            
        sb.Append("<textarea runat='server' id=txt_comments" & i & " 
                    name='txt_comments' rows='5' cols='60'></textarea></td>")          
        sb.Append("</tr>")
     Next        
    sb.Append("</table>")
    myDiv.InnerHtml = sb.ToString 

 End Sub

从上面的代码中, 我正在使用stringbuilder在页面加载上动态创建<textarea> HTML控件,最后将此字符串分配给我在.aspx页面中的div

<div id="myDiv" runat="server">

我可以在Page load上查看动态创建的控件。

现在我想在按钮点击事件(保存)中访问这些文本框中的值。

我该怎么做? 任何帮助? 提前谢谢。

1 个答案:

答案 0 :(得分:0)

您将所有textarea命名为txt_comments,您将在Request.Form中看到数据(&#34; txt_comments&#34;)。在名称中添加I,然后您可以使用Request.Form访问数据(&#34; txt_comments&#34;&amp; i)

    sb.Append("<textarea runat='server' id=txt_comments" & i & " 
                name='txt_comments" & i & "' rows='5' cols='60'></textarea></td>")          

由于这是html生成的,因此您不需要属性runat =&#39; server&#39;。

这是我的测试代码。由于我不知道你如何初始化myList,我只是从0循环到10。

HTML

<body>
    <form id="form1" runat="server">
    <div id="myDiv" runat="server">

    </div>
        <asp:button ID="btnTest" runat="server" Text="Test" />
    </form>
</body>

背后的代码

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    Dim sb As New StringBuilder
    Dim i As Integer = 0
    sb.Append("<table class ='tabledata' id='tblContent'>")
    For i = 0 To 10
        sb.Append("<tr><td>")
        sb.Append("<textarea runat='server' id=txt_comments" & i & " 
                name='txt_comments" & i & "' rows='5' cols='60'></textarea></td>")
        sb.Append("</tr>")
    Next
    sb.Append("</table>")
    myDiv.InnerHtml = sb.ToString
End Sub

Protected Sub btnTest_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnTest.Click
    For i = 0 To 10
        Response.Write("[" & Request.Form("txt_comments" & i) & "]")
    Next
End Sub