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

我正在尝试更新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,以便通过ci值搜索数据:

@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 + "
" + 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>
}

DBContext have a save method you must run this.

Did you run Save(); method ?

If you mean Undefined in your alert message box, it's simple:

$.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);
    }
});

Your ajax code displays the content of data.msg. But when your model is valid, it retrieves the model from the database, updates it and returns the new model. There is no msg json property if it succeeds, hence data.msg is undefined.

If you want it to return a success message, you need to change

return Json(c, JsonRequestBehavior.AllowGet);

into

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

then you will have a message in data.msg and your newly updated record in data.record.