getJson не запускает контроллер ActionResult должным образом - PullRequest
0 голосов
/ 25 сентября 2018

В Razor ASP я пытаюсь получить идентификатор объекта базы данных, как только он зарегистрирован.Вот Json.

function Registrar() {
    var obj = { alcohol: $("#alcoholId").val(), tabaco: $("#tabacoId").val(), otros: $("#otrosId").val()};
    //alert($("#codigo").val());
    $.getJSON("/AntecedentesMvc/Registrar", obj, function (e) {
        if (e != "") {
            alert(e);
        }
        else {
            alert("se realizó un registro con exito");
            GetHabitoId();
        }
    });
}
function GetHabitoId() {
    $.getJSON("/AntecedentesMvc/GetHabitos", function (o) {
        $("#Hid").val();
    });
}

Registrar () работает нормально, он регистрирует объект.и в случае успеха (иначе) он должен вызвать другую функцию GetHabitoID ().Это никогда не идет к контроллеру.но если я отредактирую функцию Registrar () следующим образом

function Registrar() {
    var obj = { alcohol: $("#alcoholId").val(), tabaco: $("#tabacoId").val(), otros: $("#otrosId").val()};
    //alert($("#codigo").val());
    $.getJSON("/AntecedentesMvc/Registrar", obj, function (e) {
        if (e != "") {
            alert(e);
        }
        else {
            alert("se realizó un registro con exito");
        }
        GetHabitoId();
    });
}

function GetHabitoId() {
    $.getJSON("/AntecedentesMvc/GetHabitos", function (o) {
        $("#Hid").val();
    });
}

GetHabitoId () вызовет ActionResult.Проблема в том, что он вызывает его до того, как Registrar () это сделает.Возврат null ...

вот контроллеры

Habitos objHabito=new Habitos();
[HttpPost]
public ActionResult Registrar(int alcohol, int tabaco, string otros)
{
    objHabito.Alcohol = alcohol;
    objHabito.Tabaco = tabaco;
    objHabito.Otros = otros;
    db.Habitos.Add(objHabito);
    db.SaveChanges();
    return View();  
}

[HttpGet]
public ActionResult GetHabitos ()
{
     var Habitoid = objHabito.Id_Habitos;
     return Json(Habitoid,JsonRequestBehavior.AllowGet);
}

и если вам нужно увидеть кнопку, которая вызывает функцию

<input type="button" name="RegistrarH" value="Registrar" class="btn btn-default"onclick="Registrar();" data-dismiss="modal"/>

Я действительно запуталсяоб этой проблеме ...

1 Ответ

0 голосов
/ 25 сентября 2018

В этом есть некоторые плохие практики, но чтобы заставить его работать как задумано, я сделал следующее:

function GetHabitoId() {
    $.getJSON("/AntecedentesMvc/GetHabitos", function (o) {
        $("#Hid").val(o);
    });
}

Проблема заключалась в том, что val () не получал параметров!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...