【问题标题】:How to call a javascript function from c# code behind on Asp.net Button click?如何从 Asp.net 按钮点击后面的 c# 代码调用 javascript 函数?
【发布时间】:2026-01-01 08:55:02
【问题描述】:

我想从后面的代码中调用我的 facebook 发送对话框函数:

javascript代码是:

function facebook_send_message(to) {
    FB.ui({
        app_id:'*****',
        method: 'send',
        name: "*****",
        link: '*****',
       to: <%=to %>,
        description:'sdf sdf sfddsfdd s d  fsf s ',
        redirect_uri: '******'


    });
}

这里的转折是我想从动态生成的 Aspx 按钮中调用它

 Button btn = new Button();
 btn.CssClass = "btn-add";
 btn.Text = "Invite";
 btn.Click += new EventHandler(btn_Click);

我在按钮单击时尝试了此代码

protected void btn_Click(object sender,EventArgs e)
{

    Page.ClientScript.RegisterStartupScript(Page.GetType(), "my", "function facebook_send_message(to);", true);

}

但它不起作用请帮忙?

【问题讨论】:

    标签: c# asp.net facebook facebook-graph-api button


    【解决方案1】:

    将其添加为属性。

    btn.attributes.add("OnClientClick", "javaScript: return myfunction(););
    

    如果OnClientClick 不起作用,请尝试onClick。想不起来哪一个会起作用。

    确保在JS函数中return false,以防止Postback

    伪代码:

    --JS函数--

    function myFunction() {
             alert('this is my fb function');
             return false;
    }
    

    --在aspx.cs页面中添加按钮--

    Button b = new Button();
    b.ID = "btnSomeButton";
    b.Text = "Call fb button";
    dvButton.Controls.Add(b);
    b.Attributes.Add("onclick", "return myFunction();");
    

    您不需要像代码中那样需要btn_click 事件。你也不需要RegisterStartupScript,因为你已经在 J​​S 文件中有你的函数。 RegisterStartupScript 用于从服务器端向页面添加 JS 功能。

    【讨论】:

    • OnClientClick 应该可以工作。 Click 需要一个服务器端方法。
    • 谢谢。我已经更新了答案。我猜是onClick而不是点击。
    • 我的按钮是一个 aspx 按钮,它不起作用。它只是回发
    • 我明白你的按钮是asp按钮。我已经更新了答案。看看有没有帮助。
    • @vini:如果您不希望回发发生,您应该从您的函数或 onclick 代码中返回 false。如果您不需要回发,则只需在 ASPX 上发布非服务器端控件就更容易了,如&lt;input type="submit" onclick="alert('hello');return false;"&gt;