【问题标题】:Cant Insert Data into Database Using Ajax - ASP.NET MVC无法使用 Ajax 将数据插入数据库 - ASP.NET MVC
【发布时间】:2018-11-21 01:33:42
【问题描述】:

我尝试在用户提交表单时将数据插入数据库,但仍然没有运气

我在浏览器中检查了控制台没有错误。

我一步一步调试了我的 JsonResult,我可以看到 Model Contains data 和 ModelState 它的 true ,但是

当我调试我的 JsonResult 时,我可以看到 Id Contains 0(也许 Id 是 0 会导致问题?!)并且在我看到这个之后,我在我的 Controller 和我的 Ajax 中都做了 if/else 语句,但仍然无法工作.

我还将 Id 存储在 Json 结果中的 ViewBag.ID 中,而不是在 View 中,我将输入字段类型隐藏并将 ViewBag.ID 作为值存储在输入字段中。

谁能指出我正确的方向?!

控制器:

[HttpPost]
public JsonResult ProcessRequestRMA(RMA_History model)
{

    ViewBag.ID = model.Id;

    if (ModelState.IsValid)
    {
        if (ViewBag.ID == 0)
        {
            db.RMA_History.Add(new RMA_History
            {
                Id = ViewBag.ID,
                Kundenavn = model.Kundenavn,
                Ordrenummer = model.Ordrenummer

            });
            db.SaveChanges();
        }


    }



    return Json(model, JsonRequestBehavior.AllowGet);
}

AJAX:

<form>

 <input name="Ordrenummer"  type="text" id="Ordrenummer" >

 <input name="Kundenavn"  type="text" id="Kundenavn" >

 <input type="hidden" name="Id" id="Id" value="@ViewBag.ID" />

 <button id="btn" type="submit">Send</button>

 </form>

<script>
    $(document).ready(function () {

        $("#btn").click(function (e) {
            e.preventDefault();
            return myfunction();
        });


        function myfunction() {

            var model = {

                Kundenavn: $("#Kundenavn").val(),
                Ordrenummer: $("#Ordrenummer").val(),
                Id: $("#Id").val()

            }

            $.ajax({
                type: 'POST',
                url: "/Account/ProcessRequestRMA",
                dataType: 'json',

                data: {

                    Kundenavn: model.Kundenavn,
                    Ordrenummer: model.Ordrenummer,
                    Id: model.Id
                },

                beforeSend: function (status) {
                    if (model.Id == 0) {
                        status.Id = model.Id
                        status.Kundenavn = model.Kundenavn;
                        status.Ordrenummer = model.Ordrenummer;

                        console.log("Send");

                    }

                    else {
                        alert("Something Wrong");
                    }
                },
                success: function (run) {

                    if (run) {

                        console.log("Send success");
                    }
                    else {
                        alert("Something wrong in success");
                    }

                },

                error: function () {
                    console.log('something went wrong - debug it!');
                }
            });
        }


    });
</script>

型号:

public class RMA_History
    {
public int Id { get; set; }  
public string Kundenummer { get; set; }
public string Ordrenummer { get; set; }

//Table & Column Mappings 
//Stuff here

//Key
HasKey(t => t.Id);
}

【问题讨论】:

    标签: jquery ajax asp.net-mvc database


    【解决方案1】:
    if (ViewBag.ID == 0)
    {
        db.RMA_History.Add(new RMA_History
        {
            //here is your problem... typically you don't need to specify the id
            //after you save changes, the id will come back to you and then you 
            //can store it in the viewbag
            Id = ViewBag.ID,
            //other stuff
        }
     }
    

    您正在尝试保存 id 为 0 的记录。我假设在您的数据库中这是一个自动增量列。

    试试这样的方法:

    var RMA = new RMA_History
    {
        Kundenavn = model.Kundenavn,
        Ordrenummer = model.Ordrenummer
    }
    
    db.RMA_History.Add(RMA);
    db.savechanges();
    model.Id = RMA.Id;
    
    return Json(model, JsonRequestBehavior.AllowGet);
    

    【讨论】:

    • 谢谢它的帮助:)
    猜你喜欢
    • 2017-08-12
    • 2018-10-03
    • 1970-01-01
    • 2013-11-21
    • 2021-07-23
    • 1970-01-01
    • 2023-03-03
    • 2017-09-22
    • 1970-01-01
    相关资源
    最近更新 更多