为什么我的数据没有更新?

时间:2014-02-16 05:51:25

标签: c# jquery ajax asp.net-mvc-4 post

我正在尝试更新ClientInfo表。但它没有更新并显示未定义。我在控制器中使用的那些代码用于更新我的数据库表数据。我无法找到问题在哪里?专家请帮帮我..

 [HttpPost]
        public JsonResult Update(ClientInfo clnt, int id)
        {
            if (ModelState.IsValid)
            {
                ClientInfo c = db.Query<ClientInfo>("Select * from ClientInfo Where CId=@0", id).First<ClientInfo>();
                c.CName = clnt.CName;
                c.CCName = clnt.CCName;
                c.Address = clnt.Address;
                c.PhoneNo = clnt.PhoneNo;
                c.Fax = clnt.Fax;
                c.Email = clnt.Email;
                c.Country = clnt.Country;
                c.PostalCode = clnt.PostalCode;
                c.Update();
                return Json(c, JsonRequestBehavior.AllowGet);
            }
            else
                return Json(new { msg = "Fail to Update Client Info." + id });
        }  

搜索控制器用于搜索数据

public JsonResult Search2(string id=null)
        {
            if (id != null)
            {
                var sresult = db.Query<ClientInfo>("Where CId=" + id).ToList<ClientInfo>();
                return Json(sresult, JsonRequestBehavior.AllowGet);
            }
            else
                return null;
        }

我从视图调用ajax用于按cid值搜索数据..

@section scripts{
    @Scripts.Render("~/bundles/jqueryui")
    @Scripts.Render("~/bundles/jqueryval")
    @Styles.Render("~/Content/themes/base/css")

<script type="text/javascript">
    $(document).ready(function () {
        $('#CId').blur(function () {
            var v = $('#CId').val();
            var url = "/Clients/Search2/" + v;
          //  alert("Test : " + url);

            $("#CName").val("");
            $("#CCName").val("");
            $("#PhoneNo").val("");
            $("#Fax").val("");
            $("#Email").val("");
            $("#Address").val("");
            $("#PostalCode").val("");
            $("#Country").val("");

            $.getJSON(url, null, function (data, status) {
                $.each(data, function (index, C) {
                    $("#CName").val(C.CName);
                    $("#CCName").val(C.CCName);
                    $("#PhoneNo").val(C.PhoneNo);
                    $("#Fax").val(C.Fax);
                    $("#Email").val(C.Email);
                    $("#Address").val(C.Address);
                    $("#PostalCode").val(C.PostalCode);
                    $("#Country").val(C.Country);
                });
            });
        });

对于数据库更新,我已使用此功能...

        $('#btnUpdate').click(function () {
            var CId = $("#CId").val();
            var CName = $("#CName").val();
            var CCName = $("#CCName").val();
            var PhoneNo = $("#PhoneNo").val();
            var Fax = $("#Fax").val();
            var Email = $("#Email").val();
            var Address = $("#Address").val();
            var PostalCode = $("#PostalCode").val();
            var Country = $("#Country").val();

            var client1 = {
                "CId": CId,
                "CName": CName,
                "CCName": CCName,
                "PhoneNo": PhoneNo,
                "Fax": Fax,
                "Email": Email,
                "Address": Address,
                "PostalCode": PostalCode,
                "Country": Country
            };

            var lk = "/Clients/Update/" + CId;

            //alert("Test : Update " + lk + "\n" + client1.Country);
            client = JSON.stringify(client1);

            $.ajax({
                cashe: false,
                async: false,
                url: lk,
                type: 'POST',
                data: client,
                dataType: "json",
                success: function (data) {
                    alert(data.msg);
                },
                error: function (data) {
                    alert(data.msg);
                }
            });

        });
    });

</script>
}

2 个答案:

答案 0 :(得分:1)

如果您的警告信息框中有Undefined,那就很简单:

$.ajax({
    cashe: false,
    async: false,
    url: lk,
    type: 'POST',
    data: client,
    dataType: "json",
    success: function (data) {
        alert(data.msg);
    },
    error: function (data) {
        alert(data.msg);
    }
});

您的ajax代码显示data.msg的内容。但是当模型有效时,它会从数据库中检索模型,更新模型并返回新模型。如果成功,则没有msg json属性,因此data.msg未定义。

如果您希望它返回成功消息,则需要更改

return Json(c, JsonRequestBehavior.AllowGet);

return Json(new { msg = "Update Successful.",  record = c }, JsonRequestBehavior.AllowGet);

然后,您将在data.msg中收到一条消息,并在data.record中收到新更新的记录。

答案 1 :(得分:0)

DBContext有一个保存方法,你必须运行它。

你运行Save();方法?