Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Button.OnClientClick问题_C#_.net_Asp.net - Fatal编程技术网

C# Button.OnClientClick问题

C# Button.OnClientClick问题,c#,.net,asp.net,C#,.net,Asp.net,我会发布更多的代码来显示我到底想做什么, 我使用编程代码而不是标记添加按钮,但OnClick无法工作(出现以下错误: System.Web.UI.WebControl.Button.OnClick(System.EventArgs)由于其保护级别而不可访问 我就是不明白为什么这样不行 有谁能帮我吗?您需要使用OnClick进行服务器端单击,而不是OnClientClick 或者您可以内联使用它> <asp:Button id="btnopslaan" runat="server' OnCl

我会发布更多的代码来显示我到底想做什么, 我使用编程代码而不是标记添加按钮,但OnClick无法工作(出现以下错误:

System.Web.UI.WebControl.Button.OnClick(System.EventArgs)由于其保护级别而不可访问

我就是不明白为什么这样不行


有谁能帮我吗?

您需要使用
OnClick
进行服务器端单击,而不是OnClientClick

或者您可以内联使用它>

<asp:Button id="btnopslaan" runat="server' OnClick="btnopslaanClick" />

您需要使用
OnClick
进行服务器端单击,而不是OnClientClick

或者您可以内联使用它>

<asp:Button id="btnopslaan" runat="server' OnClick="btnopslaanClick" />

btnopslanclick
应该是客户端,在
中。aspx
本身有:

<script type="text/javascript">
function btnopslaanClick() {
   alert("success");
}
</script>

函数btnopslaanClick(){
警惕(“成功”);
}

btnopslaanClick
应该是客户端,在
中。aspx
本身有:

<script type="text/javascript">
function btnopslaanClick() {
   alert("success");
}
</script>

函数btnopslaanClick(){
警惕(“成功”);
}

您对服务器进行了一次回发呼叫

aspx写入:

<asp:Button runat="server" ID="buttonOpslaan" Text="opslaan" ></asp:Button>
使用AutoEventWireUp(推荐)处理它,如:

或者在ASPX中使用javascript在客户端处理它(它不会到达服务器)


功能按钮单击{
警报(“测试”);
返回false;
}
Net的版本)

因此,只添加一次控件是永远不会起作用的。

这意味着您必须在每次回发时重建控件。我的首选方法是在某处存储一个列表/文档,说明每次必须创建哪些控件。可能的位置从差到好(IMHO):

  • 会议
  • 视图状态
  • 缓存
  • XML/IO
  • 数据库
毕竟,您正在将“数据”发布到服务器(表示控件),并希望将其保存以供进一步使用


如果要创建的控件没有那么复杂,您可以实现一个工厂模式,如WebControlFactory,它只在列表或字典中存储一些属性,每次读取这些属性都会重新创建控件(一次又一次,一次又一次)您对服务器进行了一次回发呼叫。在你的

aspx写入:

<asp:Button runat="server" ID="buttonOpslaan" Text="opslaan" ></asp:Button>
使用AutoEventWireUp(推荐)处理它,如:

或者在ASPX中使用javascript在客户端处理它(它不会到达服务器)


功能按钮单击{
警报(“测试”);
返回false;
}
Net的版本)

因此,只添加一次控件是永远不会起作用的。

这意味着您必须在每次回发时重建控件。我的首选方法是在某处存储一个列表/文档,说明每次必须创建哪些控件。可能的位置从差到好(IMHO):

  • 会议
  • 视图状态
  • 缓存
  • XML/IO
  • 数据库
毕竟,您正在将“数据”发布到服务器(表示控件),并希望将其保存以供进一步使用



如果要创建的控件没有那么复杂,您可以实现一个工厂模式,如WebControlFactory,它只在列表或字典中存储一些属性,每次读取这些属性都会重新创建控件(一次又一次,一次又一次)

这就是我所想的,但当我使用它时,会出现如下错误:“System.Web.UI.WebControls.Button.OnClick(System.EventArgs)”无法访问到其保护级别。这就是我所想的,但当我使用它时,会出现如下错误:“System.Web.UI.WebControls.Button.OnClick(System.EventArgs)“无法将deu访问到其保护级别。”无法使用aspx,因为我使用编程代码添加按钮,而不是aspx@Nico根本不相关。无论按钮是如何创建的,如果你想使用
OnClientClick
,你需要在页面中包含JS代码。不能使用aspx,因为我使用编程代码添加按钮,而不是aspx@Nico根本不相关。按钮是如何创建的并不重要,如果你想使用
OnClientClick
,你需要在页面中包含JS代码。这就是我所想的,但当我使用它时,会出现以下错误:“System.Web.UI.WebControls.button.OnClick(System.EventArgs)“无法将deu访问到其保护级别。”这是我所认为的,但当我使用它时,会出现以下错误:“System.Web.UI.WebControl.Button.OnClick(System.EventArgs)”无法将deu访问到其保护级别。“无法使用aspx,因为我使用编程代码添加按钮。”。我尝试了EventHandles,但仍然无法工作:/。尝试重新编写按钮的litlle代码,正如您所说的“完全从代码隐藏中执行”,但我仍然单击按钮刷新页面,清除整个页面,但没有按我的要求执行操作(尝试了测试标签,然后单击testlabel.text=“成功”,但olso没有执行任何操作)用什么方法创建按钮?什么是添加按钮(BTNOPSLAN)?有一个面板,我把标签,单选按钮和一些按钮(因为标签的数量等是不固定的)。方法:ddlModel_SelectedIndexChanged->Dropdownlist。addbutton(btnopslaan)是我用来添加按钮的方法,我知道我用了很难做到的方法:PI会把页面放到网上,这样你就可以清楚地看到我在做什么。我不能使用aspx,因为我使用编程代码来添加按钮。我尝试了EventHandles,但仍然无法工作:/。尝试重新编写按钮的小部分代码,正如您所说的“完全从代码隐藏中执行”,但我仍然单击按钮刷新页面,清除整个页面,但没有按我的要求执行(尝试了测试标签,然后单击testlabel.text=“成功”,但olso什么也不做)
protected void Page_Init(object sender, EventArgs e)
{
    buttonOpslaan.Click += new EventHandler(buttonOpslaan_Click);
}

// mind: this method can be private
void buttonOpslaan_Click(object sender, EventArgs e)
{
    //do something
}
  <asp:Button runat="server" 
    ID="buttonOpslaan" 
    OnClick="buttonOpslaan_Click" 
    Text="opslaan" ></asp:Button>

// mind: this method cannot be private, but has to be protected at least.
protected void buttonOpslaan_Click(object sender, EventArgs e)
{
    //do something
}
// note: buttonOpslaan must have an (autoassigned) ID.
protected void Page_Init(object sender, EventArgs e)
{
    Button buttonOpslaan = new Button();
    buttonOpslaan.Text = "opslaan!";
    buttonOpslaan.Click += new EventHandler(buttonOpslaan_Click);
    form1.Controls.Add(buttonOpslaan);
}

protected void buttonOpslaan_Click(object sender, EventArgs e)
{
    //do something
}
<script type="text/javascript">
    function buttonOpslaan_Click(){
        alert("test");
        return false;
    }
</script>
<asp:Button runat="server" 
    ID="buttonOpslaan" 
    OnClientClick="buttonOpslaan_Click()"        
    Text="opslaan" ></asp:Button>