jquery.clone()和ASP.NET Forms

时间:2010-06-14 20:27:56

标签: asp.net jquery

所以我有一个页面,我希望能够将多个动态用户添加到数据库中的记录中。这是粗略的开始页面:

    <div id="records">
        <div id="userRecord">
            Name: <asp:TextBox runat="server" ID="objNameTextBox"></asp:TextBox> <br />
            Phone Number: <asp:TextBox runat="server" ID="objPhoneNumberTextBox"></asp:TextBox> <br />
        </div>
    </div>

和jquery:

   $(function () {
   $(".button").button().click(function (event) { addnew(); event.preventDefault(); });
    })
    function addnew() {
        $('#userRecord').clone().appendTo('#records');
    }

所以我的问题是我在ASP.NET中使用什么能够轮询表单中的所有数据并为#records div中的每个#userRecord div添加一个唯一的记录?是的 - 我应该将userRecord更改为一个类 - 我将处理它。这只是一个简单的测试。

我应该在JSON中查找此类函数吗?我不熟悉它,但如果这确实是我最好的选择,可以弄明白。感谢您的指导!

2 个答案:

答案 0 :(得分:2)

您无法使用Javascript复制ASP.NET Web窗体控件,因为运行时会保留HTML中控件的跟踪,如果您尝试使用Javascript复制它们,则复制HTML并且它们看起来可能相同,但ASP。 NET对它们一无所知。

您可以使用UpdatePanel执行此操作,并使用按钮触发其中的帖子,并以编程方式在后端创建控件并将其附加到所述面板,这将模仿您尝试执行的操作。

另一种方法是创建HTML输入并将内容提交给Web服务或Web方法,并在那里对数据库进行实际插入,但是正常的ASP.NET方法不适用于所述输入,因为它们是就ASP.NET而言,不是控件。

答案 1 :(得分:0)

如果你试图在回发ASP.NET页面期间添加新记录,那么......祝你好运。我不确定您是否可以将新的“项目”添加到客户端列表中。 ASP.NET WebForms使用视图状态(实际上只是直接嵌入到返回给用户的页面的HTML中的大量信息)来维护页面的状态,我认为你不能轻易(我“确定理论上可能”更新视图状态客户端(无论您使用的是jQuery还是JavaScript)。

也许我自己的情况足够相似。如果我有一个包含项目列表的页面,并且我希望允许用户添加新项目,我会添加相应的输入字段,就像您已经完成的那样,并添加一个特殊的按钮,我将绑定一个JavaScript函数(通过jQuery)向Web服务(Visual Studio项目中的另一项)发出AJAX请求,并使用JSON来回传递数据(比使用默认XML简单得多)。这样就不需要将整个页面发布到Web服务器上,以便用户对后端数据进行更改,并且您不需要(以某种方式)解析页面数据本身以确定需要添加哪些项目数据库。