ASP.NET在javascript中调用ASP.NET按钮服务器事件

ASP.NET在javascript中调用ASP.NET按钮服务器事件,asp.net,events,Asp.net,Events,我有一个ASP.NET页面,其中有一个ASP.NET按钮控件和一个普通html链接(anchor tage)。我想在有人单击链接时调用ASP.NET按钮控件的postbackl事件 我使用了下面的代码 <a href="javascript:myFunction();" class="checkout" ></a> <asp:Button ID="btnCheckout" runat="server" Visible="false" onclick="btnCh

我有一个ASP.NET页面,其中有一个ASP.NET按钮控件和一个普通html链接(anchor tage)。我想在有人单击链接时调用ASP.NET按钮控件的postbackl事件

我使用了下面的代码

 <a href="javascript:myFunction();" class="checkout" ></a>
<asp:Button ID="btnCheckout" runat="server" Visible="false" 
onclick="btnCheckout_Click" />
但是当运行这个时,我得到一个错误,比如doPostBack未定义

有人能告诉我为什么吗


提前感谢

无论如何,这是行不通的。当您使用“Visible=”false“使.NET控件不可见时,它不会呈现,这意味着在客户端不可用

回到你的问题上来。 1-myFunction在哪里定义?在标签之间? 2-页面上是否有更多的.NET控件?如果没有任何其他.NET控件,.NET不会添加回发和其他内容所需的所有脚本

为什么不执行以下操作(基于Villageidiot答案):



在上面的例子中,你不需要假按钮,而是让它不可见。你仍然可以做回发。我想说的是更干净的方法。

首先,我尝试了你的代码,也没有得到类似于\u doPostBack的东西,然后我在页面上添加了另一个按钮,它是可见的,但都是一样的。然后我添加了一个链接按钮,并得到了\uu doPostBack方法。您可以从javascript发回帖子,但问题是,因为它不允许这种事情。我不得不用以下方法来克服它,而且它奏效了:

    protected override void Render(HtmlTextWriter writer)
    {
        ClientScript.RegisterForEventValidation(
                  new PostBackOptions(btnCheckout, "OnClick"));
        base.Render(writer);
    }
我觉得我的回答有点语无伦次,所以我将其标记为wiki:)

<asp:LinkButton ID="lbtnCheckout" runat="server" CausesValidation="false" OnClick="lbtnCheckout_Click" CssClass="checkout" />
    protected override void Render(HtmlTextWriter writer)
    {
        ClientScript.RegisterForEventValidation(
                  new PostBackOptions(btnCheckout, "OnClick"));
        base.Render(writer);
    }