如何使用ASp MVC中的甜蜜警报确认用户数据的编辑

时间:2018-01-09 09:51:27

标签: javascript c# ajax asp.net-mvc stored-procedures

我正在使用SQL Server的存储过程开发ASP MVC Web应用程序。

我正在尝试建立确认警报(Sweet Alert)以确认已登录用户的数据更新。

编辑的代码完美无需确认。但是一旦添加确认警报,我就会遇到通过javascript函数将用户(客户端)的参数从视图传递到控制器的问题。

我试图将洞模型作为参数传递给onClick(),但我得到了一个JavaScript错误:

  

未捕获的ReferenceError:未在HTMLInputElement.onclick

中定义传递

这是我的观看代码(编辑页面)的一部分:

     <input type="button" value="Save" class="btn btn-default" onclick="Update(@Model.ClientId)">

<script src="https://unpkg.com/sweetalert/dist/sweetalert.min.js"></script>
    <script type="text/javascript">
        function Update(clientId) {
            swal({
                title: "Are you sure?",
                text: "Once modified, you will not be able to recover your profile!",
                icon: "warning",
                buttons: true,
                dangerMode: true,
            })
        .then((willDelete) => {
            if (willDelete) {
                $.ajax({
                    type: "POST",
                    data: {
                        id: clientId
                    },
                    url: "/Client/Edit",
                    dataType: "json",
                    success: function (response) {
                        swal("Poof! Your profile has been modified!", {
                            icon: "success",
                        }).then(function () {
                            window.location.href = "/Home/Index"
                        });

                    },
                    failure: function (response) {
                        alert(response.responseText);
                    },
                    error: function (response) {
                        alert(response.responseText);
                    }
                });

            }
            else {
                swal("Your profil is safe!");
            }
        });
        }
    </script>

Controller(ClientController):

 [HttpPost]
    public JsonResult Edit(int id, Client cmodel)
    {
        try
        {

                ClientManagement cdb = new ClientManagement();
            if (cdb.UpdateDetails(cmodel))
            {
                TempData["Message"] = "Client Details Edited Successfully";
            }

            return Json("edited");
        }
        catch
        {
           return Json("Error");
        }
    }

ClientManagement类:

  public bool UpdateDetails(Client cmodel)
    {
        try
        {
            connection();
            SqlCommand cmd = new SqlCommand("UpdateClientsInfo", con);
            cmd.CommandType = CommandType.StoredProcedure;

            cmd.Parameters.AddWithValue("@CltId", cmodel.ClientId);
            cmd.Parameters.AddWithValue("@FirstName", cmodel.FirstName);
            cmd.Parameters.AddWithValue("@LastName", cmodel.LastName);
            cmd.Parameters.AddWithValue("@Email", cmodel.Email);
            cmd.Parameters.AddWithValue("@Phone", cmodel.Phone);
            cmd.Parameters.AddWithValue("@Address", cmodel.Address);
            cmd.Parameters.AddWithValue("@Password", cmodel.Password);

            con.Open();
            int i = cmd.ExecuteNonQuery();
            con.Close();

            if (i >= 1)
                return true;
            else
                return false;
        }

        catch (SqlException sqlexc)
        {
            foreach (SqlError error in sqlexc.Errors)
            {
                string msg = string.Format("{0}: {1}", error.Number, error.Message);
            }
            return false;
        }
    }

调试时,客户端(ClientId,LastName ...)的所有值都是 Null

1 个答案:

答案 0 :(得分:0)

您必须在&#39;(单引号)中传递参数。

<input type="button" value="Save" class="btn btn-default" onclick="Update('@Model.ClientId')">