【问题标题】:Events in ASP NET Custom Server ControlASP NET 自定义服务器控件中的事件
【发布时间】:2015-11-02 13:41:08
【问题描述】:
我想知道在我的自定义服务器控件中调用回发的两种方法有什么区别:
Page.ClientScript.GetPostBackEventReference(new PostBackOptions (this))
或手动
__doPostBack('MyControl1', '')
这两种解决方案中哪一种更好,为什么?
【问题讨论】:
标签:
c#
asp.net
webforms
custom-server-controls
【解决方案1】:
我发现作为一般经验法则,最好避免在 JavaScript 中硬编码 ID。我还发现最好让 ASP 为您生成它可以为您生成的东西,以便 ASP 得到 ASP 所期望的。
如果您让 ASP 为您生成 __doPostback,那么您就知道 ASP 知道您在谈论哪个控件。当您使用 ClientScript.GetPostbackEventReference 时,您将获得相关控件的正确事件目标和事件参数。即使您在标记中移动它或以其他方式更改其 clientID ASP 仍然知道您在说什么,因为它会生成 JavaScript。
诚然,您可以通过良好的位置 避免这种特殊的陷阱,但我认为将其保留在后端更简洁。
我试图找到一篇谈论这个的文章或博客来支持我,所以这不是严格的观点,但我发现的大部分内容都是关于如何使用它的指导,而不是他们为什么应该使用它.