按下asp按钮时如何停止重新加载页面?

时间:2019-01-12 17:04:27

标签: c# asp.net

我创建了具有许多字段的表单,这些字段在页面加载时加载有关特定用户的信息。用户单击按钮更新时,页面似乎正在重新加载,然后将相同的信息发送到服务器。

我已经看过关于stackoverflow的模拟答案,但似乎没有一个对我有用。

这是我的前端。

<asp:TextBox ID="BirthDate" type="text" runat="server" class="form-control" 
 placeholder="fecha nacimiento"  aria-describedby="inputGroupPrepend" 
 required="required"></asp:TextBox>

<asp:Button class="btn btn-primary" ID="update" runat="server" Text="actualizar"  AutoPostback="false" OnClick="update_Click"/>

这是我的后端。

    //This is where the textboxes are populated 
    protected void Page_Load(object sender, EventArgs e)
    {
        string employeID = gestiondeempleados.empleadoID;

        string queryStr = "SELECT empleado_id,nombreusuario,nombre  Where empleado_id =" + employeID;
        using (conn = new MySql.Data.MySqlClient.MySqlConnection(connString))
        {
            using (cmd = new MySql.Data.MySqlClient.MySqlCommand(queryStr, conn))
            {
                conn.Open();
                using (reader = cmd.ExecuteReader())
                {
                    if (reader.Read())
                    {
                         firstname.Text = reader.GetString(reader.GetOrdinal("nombre"));
                    }
                }
            }
        }


    //This is where the change textbox should be send to the database

    protected void update_Click(object sender, EventArgs e)
    {
        if (!this.IsPostBack)
        {
            string UpdateStatement1;


            UpdateStatement1 = "update erp_empleados set " +
            "nombre = '" + firstname.Text "' where empleado_id = " + 
             gestiondeempleados.empleadoID;

            debugmsg.Text = UpdateStatement1;

            //MySql connection code....

        }

    }

我希望发送更改后的文本字段,而不是我最初加载的文本字段。

2 个答案:

答案 0 :(得分:1)

我建议使用Ajax请求而不是asp.net Web表单事件,这是在任何Web应用程序框架中提交数据而无需回发的标准和现代方法。

您需要创建一个Web方法并调用它,您可以搜索更多“ asp.net Web方法ajax jquery调用”

$('#btnSave').click(function (e) {
    e.preventDefault(); //
    var element = this;    
    $.ajax({
        url: "YOUR_WEB_METHOD_URL",
        type: "POST",
        data: JSON.stringify({ 'Options': someData}),
        dataType: "json",
        traditional: true,
        contentType: "application/json; charset=utf-8",
        success: function (data) {
            if (data.status == "Success") {
                alert("Done");
                $(element).closest("form").submit(); //<------------ submit form
            } else {
                alert("Error occurs on the Database level!");
            }
        },
        error: function () {
            alert("An error has occured!!!");
        }
    });
});

或者您可以使用更新面板(非常简单的方法,并且您将使用相同的asp.net事件,但是我不建议您使用此方法,因为它向您的页面注入了很多不清楚的脚本,并且不是安全性方面的最佳实践方面,也许部分无法与某些现代版本的浏览器一起使用。

要使用更新面板,请查看下面的链接

https://www.c-sharpcorner.com/UploadFile/f50501/use-updatepanel-control-in-Asp-Net/

答案 1 :(得分:0)

我想通了,我唯一要做的就是添加!IsPostBack是初始化的变量。我不确定为什么任何人都可以澄清原因。

List[Any]