2

我使用 jquery 向 divStaff 动态添加行:

$("span[id$='lblAddStaff']").click(function() {
        //$(".staff_tpl").find("input[id$='txtRate']").val("0,00");
        var staff_row = $(".staff_tpl");
        staff_row.find(".staff_row").attr("id", "Emp" + counter);
        $("div[id$='divStaff']").append(staff_row.html());
        counter += 1;            
    });

我要添加的行在隐藏的 div 中,带有 class=".staff_tpl" 我将此 div 的内容附加到 divStaff

当我提交页面(回发)时,如果我尝试这样显示,结果 divStaff 始终为空:

lblTest.Text = divStaff.innerHtml.ToString

基本上,我正在操作一个 div 客户端,并且我想通过我的 aspx 页面的代码隐藏来访问它的服务器端。我想我在这里遗漏了一个基本原则。

4

1 回答 1

1

这是无法做到的。
如果你想访问你在页面上创建的数据,你必须把它放在输入字段中(可能是隐藏的),并在它发布后使用Request.Form["MyHiddenFieldName"].
<div>s 不会发布到服务器。runat="server"元素在 ViewState 中回显(实际上是一个大字符串 - 您可以在页面的源代码中看到它),从而提供连续性的抽象(或它的错觉)。但是,这种刺痛并不知道您在 DOM 中所做的更改。
处理runat="server"元素时,您将看到您在服务器端所做的最后更改,但客户端更改已消失。
<input> (和文本区域、选项等)值在提交时发布到服务器,因此在页面发布后,在客户端上更改这些值将在服务器上看到。

于 2009-09-15T08:53:34.393 回答