在我的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>
答案 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>