C# getJson未正确触发控制器ActionResult

C# getJson未正确触发控制器ActionResult,c#,json,asp.net-mvc,model-view-controller,C#,Json,Asp.net Mvc,Model View Controller,在RazorASP中,我试图在数据库对象注册后立即获取其Id。这里是Json function Registrar() { var obj = { alcohol: $("#alcoholId").val(), tabaco: $("#tabacoId").val(), otros: $("#otrosId").val()}; //alert($("#codigo").val()); $.getJSON("/AntecedentesMvc/Registrar", obj,

在RazorASP中,我试图在数据库对象注册后立即获取其Id。这里是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();
    });
}
register()工作正常,它注册对象。如果成功(否则),它应该调用另一个函数GetHabitoID()。 它永远不会进入控制器。但是如果我像这样编辑函数register()

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。问题是它在registrator()完成它的工作之前调用它。正在返回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"/>


我真的对这个问题感到困惑…

在这方面有一些不好的做法,但为了让它按预期工作,我做了以下几点

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

问题是val()没有获取任何参数

尝试public JsonResult GetHabitos()为什么使用
returnview()
如果要返回客户端JS响应的POST结果?为什么要使用
$.getJSON
调用返回非JSON视图的
POST
操作?
警报(“se realizóun registro con exito”)在else块中触发?@MasoudKeshavarz,既然你提到了它。它不会触发。这可能与这个问题有关吗?