开发者问题收集

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

2017-11-02
3090

首先,我从页面标题中看到了很多关于这种情况的问题和答案,其中使用了 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 Uncaught ReferenceError: BtnDeleteRow_Click is not defined at HTMLInputElement.onclick (default.aspx:1)

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

2个回答

这就是我发表第一条评论的原因。您应该知道 OnClientClickClick 之间的区别。 如果您想为动态按钮分配方法,您需要这样做

btnDelete.Click += BtnDeleteRow_Click;
VDWWD
2017-11-02

请将“()”添加到您的 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();
};
Reinhard
2017-11-02