getJson无法正确触发控制器ActionResult

时间:2018-09-25 02:43:33

标签: c# json asp.net-mvc model-view-controller

在Razor ASP中,我正在尝试获取注册后的数据库对象的ID。这是杰森。

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()工作正常,它注册了对象。一旦成功(否则),它应调用另一个函数Ge​​tHabitoID()。 它永远不会传递给控制器​​。但是如果我这样编辑函数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 :(得分:0)

这有一些不好的做法,但是为了使它按预期工作,我做了以下工作。

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

问题是val()没有参数!