【问题标题】:How to access the dynamically created HTML control values in asp.net如何在 asp.net 中访问动态创建的 HTML 控件值
【发布时间】:2018-05-14 16:56:11
【问题描述】:

我在页面加载时动态创建了几个 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 在页面加载时动态创建 &lt;textarea&gt; HTML 控件,最后将此字符串分配给我的 .aspx 页面中存在的 div

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

我可以在页面加载时查看我动态创建的控件。

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

我该怎么做? 有什么帮助吗? 提前致谢。

【问题讨论】:

  • 你试过 Request.Form("id_of_textarea") 吗?
  • 是的,它抛出空引用错误
  • Request.Form 通常不会抛出空引用,你能告诉我们你是如何使用它的吗?
  • Request.Form("txt_cmets1").ToString()
  • 生成的 HTML 是什么样子的?您提交的
    中的所有 textarea 都在吗?

标签: html asp.net vb.net


【解决方案1】:

您将所有文本区域命名为 txt_cmets,您将在 Request.Form("txt_cmets") 中看到数据。在名称中添加I,即可通过Request.Form("txt_cmets" & i)访问数据

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

由于这是生成的html,所以不需要属性runat='server'。


这是我的测试代码。由于我不知道你是怎么初始化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

【讨论】:

  • 还是没有运气。我删除了 runat='server' 并调用 Request.Form("txt_cmets"&i)。
  • 你是不是也给textarea的name属性加了“i”?
  • 我都做了..我添加了 i 和没有 i
  • @Santosh 在名称中添加 i 对我来说效果很好。 Request.Form 字典中的所有键是什么?
猜你喜欢
  • 2012-11-03
  • 1970-01-01
  • 2010-12-02
  • 2017-07-22
  • 1970-01-01
  • 2017-12-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多