【问题标题】:How to confirm the edit of user data using sweet Alert in ASp MVC如何在 ASp MVC 中使用 Sweet Alert 确认用户数据的编辑
【发布时间】:2018-01-09 09:51:26
【问题描述】:

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

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

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

我尝试在 onClick() 中将孔模型作为参数传递,但出现 JavaScript 错误:

Uncaught ReferenceError: Delivery is not defined at 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>

控制器(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

【问题讨论】:

  • 您当前的代码正在发送一个只有一个属性的 js 对象(id)。如果您想要LastName,请将其包含在 js 对象中。如果你有表单,你可以发送表单的序列化版本,而不是向 js 对象添加单个属性
  • @Shyju 是的,这就是我的意思,我怎样才能发送孔对象?我有一个表格,如何发送它的序列化版本?
  • 你可以使用jQuery序列化方法。请参阅此示例stackoverflow.com/questions/10803292/…

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


【解决方案1】:

您必须需要在'(单引号)中传递参数。

&lt;input type="button" value="Save" class="btn btn-default" onclick="Update('@Model.ClientId')"&gt;

【讨论】:

  • 感谢您的回答,但这不是报价的问题,具有相同代码的相同确认警报在删除示例中完美运行,但不,因为编辑将 ClientId 和 cmodel 作为参数,并且删除只取clientId
猜你喜欢
  • 2020-03-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多