OnClick 事件正在刷新 ASP.NET 中的页面

问题描述 投票:0回答:1

我使用 Firestore 作为数据库来收集数据并通过中继器呈现数据,以使用 C# 在我的 Kesitler.aspx 页面上创建卡片。我的主要问题是,当我单击 asp:Button 元素时,它会刷新页面,这是我不希望发生的情况。虽然它看起来很基本,但我还没有找到简单的解决方案。我不喜欢使用 JavaScript onClick 功能,因为单击会影响数据库操作,我想在单击事件后设置数据,而不在 JavaScript 脚本中初始化数据库。这个问题有解决办法吗?

Kesitler.aspx 中的代码:

<asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Button" />

以及 Kesitler.aspx.cs 中的代码:

protected void Button1_Click(object sender, EventArgs e)
{
    Response.Write("Resss");
}

我尝试使用 Response.Redirect(Kesitler.aspx) 但这对我不起作用。

c# asp.net asp.net-core events onclick
1个回答
0
投票

这里的解释有点混乱。

如果您的网络表单中有一个按钮,并且单击它,则该网页将被发布回服务器。这样做的原因是,后面的代码可以通过服务器端代码使用、查看和修改网页上的控件。如果您不回发,则该网页仍位于用户桌面上,因此您将无法更改或修改该页面上的控件。

所以,这里有几种方法。

调用 Web 方法,并从页面上的几个控件传递值。如果需要将结果显示在页面上,那么 Web 方法将必须返回此类值,然后您的客户端 JavaScript 将更新页面上的控件。

另一种可能是采用我们所说的“部分”页面回发。在大多数情况下,这意味着客户端变量将保持不变,并且您不会遭受整页回发。

因此,您可以使用所谓的更新面板。这实际上将自动为您自动生成页面的“ajax”部分,并且无需编写 JavaScript 即可实现此功能。

因此,包括按钮,以及背后的代码的任何其他控件都需要在更新面板内部进行更新。

所以,设计模式看起来像这样:

首先,从工具箱中拖动脚本管理器 - 将其放置在标记中具有“form”标签的右侧。

然后拖入更新面板。

那么,你就有了这个:

<form id="form1" runat="server">
    <asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>

现在,稍后在您的标记中,您可以执行以下操作:

        <asp:UpdatePanel ID="UpdatePanel1" runat="server">
            <ContentTemplate>

                <h3>Place all markup and controls and buttons</h3>
                <h3>Inside of this area to ajax</h3>

                <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
                <br />
                <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>

                <asp:Button ID="Button1" runat="server" Text="Button"
                    OnClick="Button1_Click1"
                    />
            </ContentTemplate>
        </asp:UpdatePanel>

因此,在上面的更新面板内,将所有标记放置在内容模板内。

现在,当您单击该按钮时,只有页面的该部分将被发送回服务器。 (您甚至看不到浏览器微调器,从各个角度来看,该页面似乎都没有被回传。

请记住,页面生命周期确实会触发,并且像所有页面一样,页面加载事件将首先触发(像往常一样),然后按钮代码存根将运行。

所以,尝试一下上面的想法。它应该保留现有客户端 JavaScript 值的值。因此,仅将您想要“ajax”的内容和控件放置在该页面上。因此,您可以单击标准按钮并运行代码,但您的客户端 JavaScript 值将保持不变,并且不会被重新设置。

© www.soinside.com 2019 - 2024. All rights reserved.