在回发时获取客户端HTML更改

时间:2014-11-05 20:21:36

标签: c# asp.net .net

我想用javascript向表中添加行,但我也希望能够找到回发后这些行的内容。有没有办法做到这一点?

我还希望能够从服务器填充表格中的原始行(我正在考虑使用转发器)。是否仍然可以这样做?

这不是一个描述,但我认为它涵盖了它......

代码目前看起来像这样

<table id="myTable">
<tr> <td> some static row </td> </tr>
<asp:repeater id="rptTest" runat="server">
<HeaderTemplate>
    <tr class="dgheader">
        <th> head1 </th>
        <th> head2 </th>
        <th></th>
    </tr>
</HeaderTemplate>
<ItemTemplate>
    <tr class="<%# (Container.ItemIndex%2 == 0) ? "dgitem" : "dgalternatingitem" %>">
        <td><%# Eval("val1") %> </td>
        <td><%# Eval("val2") %> </td>
        <td><a class="dgdeletebutton" href="javascript:delete(this)"></a></td>
    </tr>
</ItemTemplate>
</asp:repeater>
</table>

目前我所想知道的是,在服务器方面,我可以得到一个版本的表,其中包含了我做客户端的任何更改。

1 个答案:

答案 0 :(得分:1)

为了以您描述的方式从客户端获取任何信息,您需要在表单提交中包含一个字段。

您可能想要隐藏字段。每次添加行时,都要为要捕获的每个值添加隐藏字段(例如val1和val2)或者有一个隐藏字段,并且在添加行时,将所需信息附加到现有行。

我会警告不要直接发布html,你可能只需要值而不是完整标记,而且你很可能不想清理html并解析它以获取你想要的信息。

因此,为了让您领先一步,您可以添加隐藏的输入:

<tr class="<%# (Container.ItemIndex%2 == 0) ? "dgitem" : "dgalternatingitem" %>">
    <input type="hidden" name="Row[1].val1" value="myvalue" />
    <td><%# Eval("val1") %> </td>
    <input type="hidden" name="Row[1].val2" value="myvalue" />
    <td><%# Eval("val2") %> </td>
    <td><a class="dgdeletebutton" href="javascript:delete(this)"></a></td>
</tr>

然后,您可以在后端获取提交的值:

HttpContext.Current.Request.Form["Row[1].val1"]

这是来自内存,上面的行可能不正确。