【问题标题】:ASP.NET Custom Controls and "Dynamic" Event ModelASP.NET 自定义控件和“动态”事件模型
【发布时间】:2008-09-12 12:33:49
【问题描述】:

好的,我不确定标题是否完全准确,欢迎提出建议!

我正在创建一个 ASP.NET 自定义控件,这对我来说还是比较新的东西,所以请多多包涵。

我正在考虑事件模型。由于我们没有使用 Web 控件,因此没有从按钮触发事件,而是使用适当的参数手动调用 __doPostBack。然而,这显然意味着在选择选项时会发生很多回发(选择时呈现不同的效果)。

随着时间的推移,我需要让它更加 Ajax-y 和响应式,所以我需要更改事件绑定以调用本地 Javascript。

所以,我想我应该能够切换控件的“模式”,它可以使用回发和处理本身,或者您可以指定要调用的 Javascript 函数名称而不是 doPostBack。

  • 您对此有何看法?
  • 我是否以错误的方式从控件中引发事件? (在这里完全接受建议!)
  • 您将如何处理类似问题?

编辑 - 澄清

  • 我正在创建一个自定义呈现的控件(即从 WebControl 继承)。
  • 我们没有使用现有的 Web 控件,因为我们希望完全控制呈现的输出。
  • AFAIK 让自定义呈现控件发生服务器端事件的唯一方法是从呈现的元素调用 doPostBack(如果错误,请更正!)。
  • ASP.NET MVC 不是一个选项。

【问题讨论】:

    标签: asp.net events custom-server-controls


    【解决方案1】:

    很奇怪。您正在使用 ASP.NET 服务器控件和自定义控件,但您没有使用 Web 控件?你是手动调用 __doPostBack 吗?

    你喜欢用艰难的方式做事吗?

    如果我仍然使用服务器控件模型而不是 MVC,我会在那个傻瓜上打 ASP.NET Ajax 控件并收工。你所做的就像是在 T 型车上装了一个鼓风机。这可能很有趣,很有趣,但是当你完成了所有的艰苦工作之后,你真正拥有的是什么?

    【讨论】:

    • 我同意。为什么要重新创建轮子,因为 MS 已经为您完成了。您只是在编写代码上花费了更多时间。
    【解决方案2】:

    我一直在对此进行更多研究,并在需要时遇到了如何将 Javascript 注入客户端。这显然会在使控件响应更快、与服务器之间的往返次数更少方面发挥重要作用。

    例如:RegisterClientScriptBlock

    期待更多的玩这个,随时参与进来!

    【讨论】:

    • 如果您将自定义控件包装在 ASPX 页面上的 ASP.NET AJAX UpdatePanel 中会怎样?
    猜你喜欢
    • 2011-02-21
    • 1970-01-01
    • 1970-01-01
    • 2011-01-17
    • 1970-01-01
    • 2010-11-12
    • 2010-11-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多