ASP.Net/C#未捕获的ReferenceError:HTMLInputElement.onclick中未定义<function>

时间:2017-11-02 16:02:18

标签: c# asp.net

首先,我通过页眉中的JavaScript函数看到了很多关于这种情况的问题和答案。我正在使用C#并在CodeBehind文件中定义了我的事件处理程序。

以下是创建我的按钮的代码:

Button btnDelete = new Button()
{
    ID = "btnLeadershipRowDelete" + index.ToString(),
    Text = "-"
};
btnDelete.OnClientClick = "BtnDeleteRow_Click";
btnDelete.Attributes.Add("style", "display: inline-block; width: 1.4em;");
pnlLeadershipControls.Controls.Add(btnDelete);

以下是为同一按钮呈现的HTML:

<input type="submit" name="ctl00$ctl00$cphContent$cphContent1$btnLeadershipRowDelete0" value="-" 
   onclick="BtnDeleteRow_Click;" id="ctl00_ctl00_cphContent_cphContent1_btnLeadershipRowDelete0"
   style="display: inline-block; width: 1.4em;" />

这是我试图调用的事件处理程序方法:

protected void BtnDeleteRow_Click(object sender, EventArgs e)
{
    DeleteControls(sender);
}

当我点击Chrome中的按钮时,没有任何反应。查看Chrome中的开发控制台,我发现以下错误:

  

default.aspx:1未捕获的ReferenceError:未定义BtnDeleteRow_Click       在HTMLInputElement.onclick(default.aspx:1)

我不知道自己做错了什么。任何想法都会有所帮助!

2 个答案:

答案 0 :(得分:1)

请在您的onclick事件中添加“()”。

Delete.OnClientClick = "BtnDeleteRow_Click()";

这将在单击按钮时执行函数BtnDeleteRow_Click,而不是引用它。

有关解释:

如果对元素使用内联onclick处理程序,则将直接执行该值。

<input type="submit" name="buttonName" value="-" onclick="BtnDeleteRow_Click();" id="buttonId" />

如果您在JavaScript代码中分配处理程序,则onclick函数的引用将替换为新函数

btnLeadershipRowDelete.onclick = BtnDeleteRow_Click;

或使用匿名包装函数

btnLeadershipRowDelete.onclick = function() {
    BtnDeleteRow_Click();
};

答案 1 :(得分:1)

这就是我发表第一条评论的原因。您应该知道OnClientClickClick之间的区别。 如果要将方法分配给动态按钮,则需要执行此操作

btnDelete.Click += BtnDeleteRow_Click;