使用ASP.NET AJAX从客户端控件将数据传递到服务器代码

时间:2008-10-30 23:43:48

标签: asp.net asp.net-ajax modalpopupextender

我在页面上有一个ListView,它显示了一个小部件列表。当用户点击列表中的某个项目时,我想显示一个ModalPopup,其中包含允许用户操作所选项目的控件。

我可以通过在ListView的ItemTemplate中放置一个Panel和一个ModalPopupExtender来轻松实现这一点,但这意味着每个小部件都有一组隐藏控件,这会大大增加页面大小。 (那里会有一些相当重量级的控件。)相反,我想为列表中的每个小部件重用一个ModalPopup。

我已经做了一些搜索,但我之前没有找到任何直接适用于我的情况的东西。然而,从我能够弄清楚的,我必须做这样的事情:

  1. 在UpdatePanel内的页面上放置一个Panel和一个ModalPopupExtender。
  2. 构建具有WidgetManipulator属性的自定义WidgetID用户控件。将其放在面板中,以及几个确定/取消按钮。
  3. 在页面上的Javascript中,将单击处理程序附加到ListView中的每个窗口小部件,以触发UpdatePanel上的回发。
  4. 在服务器上的UpdatePanel_Load事件中,显示ModalPopup,然后将WidgetID上的WidgetManipulator个问题设置为所点击的小部件的ID。
  5. 在服务器上的OKButton_Click事件或CancelButton_Click事件中,隐藏ModalPopup。如果单击了OKButton,请先调用WidgetManipulator.SaveChanges()
  6. 我还没想到的部分是:我怎么知道点击了什么小部件,以及在刷新UpdatePanel时如何将其传递回服务器?这甚至是正确的方法吗?

2 个答案:

答案 0 :(得分:1)

如果您可以使用jQuery,那么您可以按照以下两个帖子执行某些操作:

答案 1 :(得分:0)

当我需要在ASP.NET AJAX中将数据从客户端传递到服务器时,我通常使用带有runat =“server”的asp:HiddenField。两者都可以自由地看到它,但要注意潜在的回发异步性。

听起来你需要通知服务器点击了小部件 - 你可以使用Timer来回发;或者我选择5。