asp.net - ASP.NET Web 控件之间的 Javascript 交互

标签 asp.net javascript

我有一个 UserControl A,其中包含

  • 下拉菜单
  • 占位符

在运行时,占位符将填充一些 UserControl B。

有时我需要在下拉列表中捕获 javascript onchange 事件,以调用 B 中的 javacript 函数(以对 B 进行客户端更新)。如何做到这一点的良好设计/实践是什么?

最简单的方法是让 asp:dropdownlist 成为公共(public)成员,然后将其发送到 B: 的公共(public)方法中

// In controlling code
...
userControlB.Initialize(userControlA.TheDropDownList);
...


// In usercontrol B
public void Initialize(DropDownList dropdownFromA)
{
    dropdownFromA.Attributes.Add("onchange", "myBfunction()");
}

但是这种方法有点不好闻。我希望 A 和 B 尽可能保持松散耦合。还有更好的想法吗?

最佳答案

为了让它们真正解耦,您可以引入观察者模式,如描述的 here 。我会让下拉注册它自己的更改事件,这将通知观察者发生了更改。然后,如果客户端上的任何其他控件感兴趣,他们将在进行特定观察时获得通知。

编辑

你可以根据观察的逻辑名称来命名变量,然后你只需在注册之前检查以确保观察者存在。

我见过使用的不同系统,更像是一个事件调度程序,本质上,当您订阅时,您提供事件的名称,然后您触发时,您将包含两个参数:事件的名称和事件的数据事件。在此模型中,页面上只有一个调度程序。

关于asp.net - ASP.NET Web 控件之间的 Javascript 交互,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1137052/

相关文章:

c# - <identity impersonate ="true"/>的正确使用

asp.net - Jmeter 发布请求在执行时显示为获取请求(ASP DOTNET)

C# - NReco.PdfGenerator 非英文字符不呈现

c# - Gridview 中的 TemplateField 中的复选框在回发时丢失检查

javascript - 西蒙游戏: Two colors in a row won't fade properly

asp.net - jquery通过客户端函数选择radiobuttonlist中的项目

javascript - HTML 表单提交的两种不同操作

javascript - 如何将图像上传到firebase存储然后返回下载url?

javascript - 拆分字符串并仅存储拆分 javascript 的特定部分

javascript - 设置倒计时器的日期