【问题标题】:Send table checkbox value array via HTTP Post通过 HTTP Post 发送表格复选框值数组
【发布时间】:2012-07-31 09:42:04
【问题描述】:

我有这张表,我用它来创建动态复选框(记录的数量可能/会有所不同),我的想法是我可以在任何表格行上选择一个复选框并“发送”这些记录。

我想将一组 ID 发送到不同的页面进行处理 - 但我非常卡住!

这是我的表格/表单代码

<form action="processingpage.aspx" method="post">
  <asp:Repeater ID="GroupList" runat="server">
    <HeaderTemplate>
       <table id="grouptable" class="table"> 
         <thead>
            <tr>
              <th>Broadcast</th>
              <th>ID</th>
              <th>Name</th>
              <th>Last Modified</th>
              <th>Actions</th>
            </tr>
        </thead>
      <tbody>
    </HeaderTemplate>
    <ItemTemplate>
        <tr>
          <td>
            <input type="checkbox" name="BroadcastSelect[]" value="<%# Eval("Group_ID") %>"</input></td>
          <td><%# Eval("Group_ID") %></td>
          <td><%# Eval("DESC") %></td>
          <td><label id="test">hello</label></td>
          <td><a class="btn btn-info" href="<%# Eval("gURL") %>">Edit</a>/td>
        </tr>
    </ItemTemplate>
    <FooterTemplate>
         </tbody>
       </table>
    </FooterTemplate>
  </asp:Repeater>
  <input class="btn primary" type="submit" value="Broadcast"/>
</form>

我认为这可以发送数组,因为我设法通过 Request.in 看到了这个

BroadcastSelect[]TESTGROUP(这是我发送的项目之一)

但在我的接收页面上,我尝试过的只是空白文本

Label1.Text = Page.Request.Form["BroadcastSelect[0]"];

Label1.Text = Page.Request.QueryString["BroadcastSelect[0]"];

但不打印任何值。谁能指出我正确的方向?

【问题讨论】:

  • 您的&lt;input&gt; 格式不正确,未正确关闭。不知道这是否会有所不同
  • 我自己发现了这个,不过没有区别:(

标签: c# asp.net forms http-post


【解决方案1】:

我认为问题在于无法通过Request.FormRequest.QueryString 索引&lt;input name="BroadcastSelect[]"&gt;

如果您在代码中设置断点,您将看到 Request.Form 对象将 Request.Form["BroadcastSelect[]"] 作为可用项之一,这将返回一个 CSV 值列表。

所以试着用这个代替...

string broadcastSelect = Request.Form["BroadcastSelect[]"];
if (broadcastSelect != null)
{
   string[] broadcastSelectParts = broadcastSelect.Split(',');
   Label1.Text = broadcastSelectParts[0];
}

显然,块中的代码也可以缩减为一行,但如果您想要第一项以外的内容,请检查您是否没有选择“越界”索引...

Label1.Text = broadcastSelect.Split(',')[0];

【讨论】:

  • 这似乎正在通过:) 有没有办法确定帖子中有多少项目?顺便谢谢你的帮助!
  • broadcastSelectParts.Length?显然,这只有在有一个有效的字符串要拆分时才有效,因为空字符串拆分将产生一个项目。 编辑 但是,您可以在Split 上使用StringSplitOptions.RemoveEmptyEntries 选项
  • @JazziJeff,或者你说的是整个Request.Form的帖子总数?这更棘手,因为您必须考虑 _EVENTTARGET 类型的项目,以及索引项目,例如您上面的输入
  • 不,我在谈论帖子的特定元素 - 这是漫长的一天,我忘记了 .Length :) 这足以让我继续前进,但再次感谢您的帮助!
  • 不客气@JazziJeff - 祝你项目的其余部分好运,我希望(为了你)你的一天很快结束:-)
猜你喜欢
  • 1970-01-01
  • 2023-03-19
  • 1970-01-01
  • 2011-09-15
  • 1970-01-01
  • 2014-03-12
  • 1970-01-01
  • 1970-01-01
  • 2014-03-04
相关资源
最近更新 更多