【问题标题】:Is it possible to dynamically add webcontrols via jQuery?是否可以通过 jQuery 动态添加 web 控件?
【发布时间】:2010-05-29 01:28:04
【问题描述】:

目前我有一个包含一系列链接的网络表单。我希望能够在单击其中一个链接时添加 webcontrol 的内容。这种事情有可能吗?

如果不是,那么加载一组控件的最佳策略是什么(一个文本框和一个下拉菜单,其中包含来自一个链接的值、两个文本框和一个来自另一个链接的复选框等)。我需要能够在回发时获取每个控件的值。

理想情况下,我希望能够将新内容添加到 acordian 控件,很可能是 jQuery UI acordian。因此,每个可点击的链接都会向 acordian 控件添加新内容。

大家对此有何看法?

【问题讨论】:

    标签: jquery web-controls dynamic


    【解决方案1】:

    假设这确实是 ASP.NET WebForms,并且您确实计划使用回发提交(相当随意的)数据,那么您最好的选择可能是使用 Raj 提到的某种客户端或服务器端模板。

    然后在提交表单之前,您可以使用类似于此处描述的方法(Serialize form to JSON with jQuery),将动态创建的数据保存到隐藏字段中,并使用JSON parsing library服务器端解析数据并转将其转化为您可以使用的有意义的对象。


    如果它是一个选项,那么使用 ASP.NET MVC 做这种事情是微不足道的。您可以(相当容易地)将其拼接到现有的 WebForms 项目中,并让两者并排运行。它的主要缺点是它会有点像一个坦率的项目,并且将来维护该项目的人会对你的设计决定发表一些不友好的话。

    【讨论】:

    • 是的,我很想为此使用 mvc,你说得对,因为它很容易实现。不幸的是,你提到的限制很明显,因为我们有一个支持团队,当我完成时,他们需要对此做出正面和反面。感谢您的提示!
    【解决方案2】:

    使用这里演示的 ViewManager.RenderView:

    http://weblogs.asp.net/scottgu/archive/2006/10/22/Tip_2F00_Trick_3A00_-Cool-UI-Templating-Technique-to-use-with-ASP.NET-AJAX-for-non_2D00_UpdatePanel-scenarios.aspx

    在 web 服务中返回内容并使用 ajax 读取。

    更新

    罗马军队,我明白你在说什么。克里斯,您是否打算从添加的新内容中发回数据?如果是这样,这将不起作用。

    最好的办法是使用 ASP.NET Ajax 框架和 UpdatePanel。

    【讨论】:

    • 这种方法的局限性在于它不会更新 ViewState,因此当 Chris 尝试提交数据时 ASP.NET 可能会有点反抗。您会注意到该演示是关于渲染内容,而不是提交回来。从那时起,微软在客户端模板方面做了一些工作。
    • 我需要能够在回发时获取每个控件的值。 - 我会同意的,他需要将它们回发 = )。
    • 是的,我需要访问每个新控件中的数据才能持久保存到数据库中。我还没有尝试过,但我假设我应该能够执行类似 Request["idOfDynamicControl"] 的操作来获取服务器端的数据。
    • @Chris Conway:当您说“控制”时,我假设您的意思是原始 html 输入,而不是 asp.net 用户控件,对吧?如果是,那么是的,它们应该在请求集合中。
    • 是的,我的意思是任何 html 控件,而不是 asp.net 控件。我喜欢在隐藏的输入字段中序列化 json 然后在服务器端检索和解析的想法。下周我会尝试一下,并在成功时将问题标记为已回答。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-12-16
    • 1970-01-01
    • 1970-01-01
    • 2013-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多