Не могу вставить данные в базу данных с помощью Ajax - ASP.NET MVC - PullRequest
0 голосов
/ 11 июня 2018

Я пытаюсь вставить данные в базу данных, когда форма пользователя sumbit, но все равно не повезло

Я проверил Консоль в Браузере, нет ошибки.

Я отладил пошагово My JsonResult, и я могусм. Модель содержит данные, а ModelState имеет значение true, но

Когда я отлаживаю свой JsonResult, я вижу, что идентификатор содержит 0 (возможно, идентификатор равен 0, вызывает проблему ?!), и после того, как я это увидел, я делаю оператор if / elseи в моем контроллере, и в моем Ajax, но все еще не работает.

Я также сохранил Id в ViewBag.ID в моем Json Result, а затем в 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);
}

1 Ответ

0 голосов
/ 11 июня 2018
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
    }
 }

Вы пытаетесь сохранить запись с идентификатором 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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...