Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.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
Apsx.net C#防止在单击按钮时重新加载页面_C#_Asp.net - Fatal编程技术网

Apsx.net C#防止在单击按钮时重新加载页面

Apsx.net C#防止在单击按钮时重新加载页面,c#,asp.net,C#,Asp.net,希望你能帮忙 我有一个aspx web应用程序,它有一个从SQlite填充的列表,该列表存储移动电话号码 我有一个按钮,我可以让我启用/禁用一个文本框-所有的工作 现在,当我过滤视图并单击“编辑”时,页面将重新加载 按钮/文本框是从SQLite动态创建的 TextBox NES_editText = new TextBox(); NES_editText.CssClass = "editText";

希望你能帮忙

我有一个aspx web应用程序,它有一个从SQlite填充的列表,该列表存储移动电话号码

我有一个按钮,我可以让我启用/禁用一个文本框-所有的工作

现在,当我过滤视图并单击“编辑”时,页面将重新加载

按钮/文本框是从SQLite动态创建的

          TextBox NES_editText = new TextBox();
                        NES_editText.CssClass = "editText";
                        NES_editText.Enabled = false;
                        NES_editText.Text = SQLReader["simName"].ToString();
                        NES_editText.ID = 300 + SQLReader["simNESID"].ToString();                            
                        Sim_Rows.Controls.Add(NES_editText);
                        Sim_Rows.Controls.Add(new LiteralControl("</div>")); // COL 2                                                    
                        Sim_Rows.Controls.Add(new LiteralControl("<div class=\"col col-3\" data-label=\"Edit Name\">"));
                        Button editButton = new Button();
                        editButton.CssClass = "editButton";
                        editButton.ID = SQLReader["simNESID"].ToString();                            
                        editButton.Click += new EventHandler(EditButton_Click);                         

                        Sim_Rows.Controls.Add(editButton);
                        Sim_Rows.Controls.Add(new LiteralControl("</div>")); // COL 3    
当我过滤视图,得到两个结果并单击编辑时,页面将重新加载


有什么办法可以阻止这种情况吗?

遗憾的是,当微软发布该框架时,他们认为web应用程序应该像桌面应用程序一样工作。这个概念与构建web应用程序的协议相冲突。web应该包含无状态体系结构,但Microsoft的web表单框架是由状态驱动的

以上是页面固有的工作方式。因此,当您按下按钮时,事件将被重新排序并执行。在这种情况下,执行所谓的回发。发生这种情况时,服务器将接收事件,然后再次呈现页面

为了解决这个麻烦,微软引入了一个名为
UpdatePanel
的控件。面板将把整个页面状态加载到内存中,然后再次呈现页面后,将在控件中显示修改的部分。这允许状态驱动的体系结构不向客户端传递服务器正在保留内容的信息

<asp:UpdatePanel id="upExample" runat="server">
     <ContentTemplate>
          <asp:Label id="lblExample" runat="server" Text="Initial Load."></asp:Label>
     </ContentTemplate>
</asp:UpdatePanel>

<asp:Button id="btnExample" runat="server" OnClick="UpdateLabel_Click" Text="Update" />
您将注意到屏幕闪烁已消失,因为
UpdatePanel
中的控件是服务器事件之后呈现的页面的唯一部分。另一种方法是使用Ajax方法和处理程序


希望这能提供足够的信息来帮助您。

我想这可能就是您想要的:您是否尝试过
UpdatePanel
或传统的Ajax处理程序文件?你正在对抗的是Web表单的传统生命周期,你应该做些研究,因为对抗这种体系结构会在将来引起问题。@Brad,我看过那篇文章-我尝试过其中一些,但它禁用了“点击”事件。@Greg,谢谢你-我将在生命周期中做一些工作。@Azmodan帮你尝试了一下,希望能有帮助。嗨,格雷格,这是有道理的-我会尝试一下,然后再报告。
<asp:UpdatePanel id="upExample" runat="server">
     <ContentTemplate>
          <asp:Label id="lblExample" runat="server" Text="Initial Load."></asp:Label>
     </ContentTemplate>
</asp:UpdatePanel>

<asp:Button id="btnExample" runat="server" OnClick="UpdateLabel_Click" Text="Update" />
protected void UpdateLabel_Click(object sender, EventArgs e) => 
 lblExample.Text = $"Button clicked at: {DateTime.Now:MMMM dd, yyyy hh:mm:ss}";