0x800a1391 - JavaScript运行时错误:'Edit_Button_Click'未定义

时间:2014-05-29 18:47:45

标签: c# javascript jquery asp.net button

在我的C#脚本中,我在页面加载时创建此按钮。

    Button b = new Button();
    b.OnClientClick = "Edit_Button_Click(sender,e);";

'Edit_Button_Click(object sender,EventArgs e)'函数看起来像这样......

    protected void Edit_Button_Click(object sender, EventArgs e)
{
    Button btnSomeButton = sender as Button;
    btnSomeButton.Text = "I was clicked!";
}

但是,当我单击Web表单上的按钮时,在代码甚至到达该函数之前,我收到错误消息“0x800a1391 - JavaScript运行时错误:'Edit_Button_Click'未定义'。 这让我感到困惑,因为我在用C#编写脚本时没想到任何JavaScript错误。我是设计webforms的新手,所以如果我错了,请纠正我,但我不认为我应该看到任何与JavaScript相关的内容,因为页面语言是在C#中。

    <script runat = "server>

    protected void Page_Load(object sender, EventArgs e)
    {
    Button b = new Button();
            b.Text = "EDIT";
            b.ID = r.ID + "edit button";
            b.OnClick += Edit_Button_Click(sender, e);
    }

    protected void Edit_Button_Click(object sender, EventArgs e)
    {
        Button btnSomeButton = sender as Button;
        btnSomeButton.Text = "I was clicked!";
    }

    </script>

2 个答案:

答案 0 :(得分:2)

在C#中使用OnClientClick创建了一个名为“Edit_Button_Click”的javascript函数客户端,但是您正在定义该函数服务器端(在您的代码隐藏中)。

如果使用OnClick,它将调用服务器端方法。

答案 1 :(得分:1)

您会混淆客户端和服务器端事件。而不是

b.OnClientClick = "Edit_Button_Click(sender,e);";

(为浏览器中发生的点击事件分配客户端处理程序)执行

b.Click += Edit_Button_Click;

这将分配在服务器端回发时发生的C#事件处理程序。

这是一个基本的例子:

<script runat = "server">

    protected void Page_Load(object sender, EventArgs e)
    {
       Button b = new Button();
       b.Text = "EDIT";
       b.ID = b.ID + "edit button";
       b.Click += Edit_Button_Click;
       form1.Controls.Add(b);
    }

    protected void Edit_Button_Click(object sender, EventArgs e)
    {
       Button btnSomeButton = sender as Button;
       btnSomeButton.Text = "I was clicked!";
    }

</script>