0

在 ASP.Net 中,我正在尝试创建一个 WebControl。在这个控件中,我的 html 控件覆盖了 RenderControl 方法。

protected override void RenderContents(HtmlTextWriter output)
{
    output.Write(@"<table><tr><td>");
    output.Write(@"<input type=""submit"" name=""btnExecute"" value=""Execute""  id=""btnExecute"" />");
    output.Write(@"</td></tr></table>");
}

如何使按钮调用单击事件,以便可以调用服务器端方法 btnExecute_Click()?此外,此按钮甚至在服务器端之前调用 javascript 函数。

请建议如何使其工作。

4

1 回答 1

0

查看这个示例,了解如何实现 CompositeControl(它是 WebControl 的衍生产品)。

http://msdn.microsoft.com/en-us/library/3257x3ea.aspx#Y114

您的按钮将作为您的 Composite 的私有成员存在。您将对其进行初始化并将其连接到 CreateChildControls 中的服务器端方法。然后,当您覆盖 CompositeControl 的 Render 方法时,您将调用按钮的 RenderControl 方法。这样做会使按钮发出将点击事件连接到 asp.net 回发的 javascript。

至于在回调之前运行的 JS……嗯,这可能有点棘手。我的建议是给 Button 一个独特的 CSS 类,然后用 jQuery 连接你的方法。但是,我不确定您将如何延迟 ASP.Net 回发,直到您的客户端方法完成...对我来说,这感觉像是一种模式混蛋,看起来您要么想要做所有这些服务器端(传统带有回发的 Asp.Net 控件)或全部在客户端(带有 ajax 的 jquery)。

于 2011-02-07T22:09:33.820 回答