Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在ASP.NET中添加/读取项目_C#_Asp.net - Fatal编程技术网

C# 如何在ASP.NET中添加/读取项目

C# 如何在ASP.NET中添加/读取项目,c#,asp.net,C#,Asp.net,我有一组文本框,用户在其中输入内容,我在他们单击提交时使用它们。我需要添加一个按钮,让他们在运行中添加另一组相同的文本框,在这些文本框中输入数据,然后当按下提交按钮时,我需要从两组文本框中获取值。添加的项目集的数量可以是无限的 在ASP.NET/C中处理此类问题的最佳方法是什么 我环顾四周,基本上只得到了这样一个结论:您可以尝试在前端使用JQuery,这会让后端变得一团糟;或者您可以尝试使用GridView,每次都用可能变得一团糟的新项重新绑定它 有更好/更简单的方法吗 感谢您的帮助。在这些情况

我有一组文本框,用户在其中输入内容,我在他们单击提交时使用它们。我需要添加一个按钮,让他们在运行中添加另一组相同的文本框,在这些文本框中输入数据,然后当按下提交按钮时,我需要从两组文本框中获取值。添加的项目集的数量可以是无限的

在ASP.NET/C中处理此类问题的最佳方法是什么

我环顾四周,基本上只得到了这样一个结论:您可以尝试在前端使用JQuery,这会让后端变得一团糟;或者您可以尝试使用GridView,每次都用可能变得一团糟的新项重新绑定它

有更好/更简单的方法吗


感谢您的帮助。

在这些情况下,我通常使用Javascript处理客户端动态创建的其他文本框,然后在提交值之前,将所有数据收集到JSON对象中,并将JSON字符串保存到ASP.NET可以读取和解析的
控件中。这不是一种完全干净的方法,但这是我迄今为止发现的最好的方法。

我会使用jQuery创建文本框(为它们分配唯一id),然后从请求中获取服务器上的值。表单键/值集合。这将是一个相当简单的解决方案。

我建议采用GridView方式,并将其绑定到数据源对象,例如ObjectDataSource。单击add按钮将向数据源添加一个空行,GridView将自动绘制该空行。当一切正常时,您可以在添加行时使用UpdatePanel来实现平滑刷新。

对第一组文本框使用Repeater控件,并对每个额外列表重复该控件

这是我的评论控制中继器。这有点神秘,因为这是我在asp.net中创建的第一个控件,但它应该可以让你继续

<asp:Repeater runat="server" ID="repeater" 
  onitemdatabound="repeater_ItemDataBound"
  >
  <HeaderTemplate>
    <table border="0" cellpadding="0" cellspacing="0" width="100%">
  </HeaderTemplate>  
  <FooterTemplate>
    </table>
  </FooterTemplate>
  <ItemTemplate>
    <tr id="trContents" runat="server"><td>
      <table id="tableComment" runat="server"
        width="100%" style="border-color:Black; border-width:1px; border-style:solid;background-color:#EEEE99">
        <tr><td id="tdHeader" runat="server"
           style="border-color:Black; border-width:1px; border-style:solid;padding: 5px">
          <table width="100%" id="tableHeader" runat="server">
            <tr>
              <td>
                <asp:Label ID="headerText" runat="server" 
                  Text="<%# GetHeader((CommentRecord)Container.DataItem) %>" />
              </td>
              <td style="text-align:right"> <%-- OnClientClick="aspnetForm.target ='_blank';"  --%>
                <asp:Button ID="btnEdit" runat="server" Text="Edit" 
                    PostBackUrl="<%$ AppSettings:TextEditor %>"  
                    />
                <asp:Button ID="btnReply" runat="server" Text="Reply" 
                    PostBackUrl="<%$ AppSettings:TextEditor %>"  
                    />
              </td>
            </tr>
          </table>
        </td></tr>
        <tr><td style="border-color:Black; border-width:1px; border-style:solid;background-color:#FFFFF0;padding: 10px">
            <%# ((CommentRecord)Container.DataItem).Text %>
        </td></tr>
        <tr><td>
          <table width="100%"><tr>
            <td style="text-align:left">
                <asp:Button ID="btnDelete" runat="server" Text="Delete" 
                    CausesValidation="False" />
            </td>
            <td style="text-align:right">
              <asp:Label ID="footer" runat="server" Text="<%# GetFooter((CommentRecord)Container.DataItem) %>" />
            </td>
          </tr></table>
        </td></tr>
      </table>
      <asp:PlaceHolder ID="placeHolder" runat="server" />
    </td></tr>
  </ItemTemplate>
</asp:Repeater>


您可以在页面的PreInit中将控件添加到ASP.NET,这将使它们参与常规页面生命周期,并在回发时重新填充。但是,如果您想添加控件而不回发到服务器,则需要在浏览器中处理它,这可能意味着使用javascript/jQuery。不管发生什么事,你也需要一些簿记;但另一种方法是使用ASP.NET数据控件,如DataRepeater或DataGrid。我从未使用过类似的东西。您使用/看到的任何链接都可以了解它吗?对于.NET端的JSON解析,我使用。对于动态生成DOM对象,我建议使用JQuery。我在谷歌上搜索了有关如何使用JQuery动态添加表单元素的信息,并提出了一个新的解决方案。