Requisição AJAX em aplicação ASP NET MVC?

Gostaria muito da ajuda de vocês com meu projeto na faculdade. Estou tentando problema no ajax a segui. Estou tentando gravar

Código do meu controller

 public ActionResult Form(int idFood)
            {
            var cadapio = new Cardapio
            {
                FoodTruckId = idFood
            };
            ViewBag.Food = cadapio;
            return View(cadapio);
        }
        [HttpPost]
        public ActionResult Form(Cardapio cardapio)
        {
            CadapioDao dao = new CadapioDao();
            dao.SalvaCardapio(cardapio);
            return Json(new { Resultado = cardapio.Id }, JsonRequestBehavior.AllowGet);
        }
} 

Código da minha View

@model FoodTruckCerrado.Models.Cardapio
@using (Html.BeginForm("Adiciona", "Cardapio", FormMethod.Post))
{
    <!--ID , Nome, Lista de Prato, FoodCruck-->
    @Html.ValidationMessage("Cardapio Invalido")
    @Html.HiddenFor(c => c.FoodTruckId)
    @Html.LabelFor(c => c.Nome, "Nome:")
    @Html.TextBoxFor(c => c.Nome, new { @class = "form-control" })
    @Html.ValidationMessageFor(c => c.Nome)
}

<a href="#" onclick="SalvarCardapio();" class="btn btn-default">Adicionar Pratos</a>
<div id="divPrato" style="display:none"></div>


@section Scripts{
    @Scripts.Render("~/bundles/jqueryval")
    <script src="~/Scripts/Cardapio.js"></script>
}

e por fim Código do Cardapio.js

function SalvarCardapio() {

    debugger;

    var nome = $("#Nome").val();

    var idFood = $("#FoodTruckId").val();

    var url = "/Cadapio/Form";

   $.ajax({
    url: url
    , type: "POST"
    , datatype: "json"
    , data: { Id: 0, Nome: nome, FoodTruckId: idFood }
    , success: function (data) {
        if (data.Id > 0) {

            debugger;

            ListarPratos(idFood.Resultado);
        }
    },
    error: function () {
        alert("erro!!");
    }
});

}
function ListarPratos(idCardapio) {
    var url = "/Cadapio/Form"
    $.ajax({
        url: url
        , type: "GET"
        , data: { idCardapio: CardapioId }
        , datatype: "html"
        , success: function (data) {
            var divPrato = $("#divPrato");
            divPrato.empty();
            divPrato.show();
            divPrato.html(data);
        }
    });
}

No fim da conta ele grava o dado no banco e tudo mais, mas não chama a ListarPratos, creio que não esta dando success tão pouco erro. alguem tem ideia do que pode esta acontecendo.

“Id” não existe no retorno do json. Aparentemente você que ler “Resultado”:

if (data.Resultado > 0) {
    ListarPratos(data.Resultado);
}

Bom dia Javaflex, então já fiz essa alteração, mas não chega a dá success tão pouco error
estou fazendo o debugger pelo console e não esta retornando nada.

function SalvarCardapio() {
    debugger;
 var nome = $("#Nome").val();

 var idFood = $("#FoodTruckId").val();

 var url = "/Cadapio/Form";
    
 $.ajax({
    url: url
    , type: "POST"
    , datatype: "json"
    , data: { Id: 0, Nome: nome, FoodTruckId: idFood }
    , success: function (data) {
        if (data.Resultado > 0) {
        
            ListarPratos(data.Resultado);
        }
    }
  });

}

Eu acredito que seu código esteja quase (quase não é correto), e vou enviar um exemplo de como seria uma requisição básica:

MODELO

ASPX:

@using(Html.BeginForm("Create", "Home", FormMethod.Post))
{
    @Html.HiddenFor(c => c.Id)

    @Html.TextBoxFor(c => c.Name)
    
    <a href="javascript:;" onclick="Enviar()">Enviar</a>    
}

<script>
    var Enviar = function () {
        var id = $("#Id").val();
        var na = $("#Name").val();
        $.ajax({
            url: '@Url.Action("Create")',
            type: "POST",
            datatype: "json",
            data: { Id: id, Name: na},
            success: function (result) {
                console.log(result);
            },
            error: function () {
                alert("erro!!");
            }
        });
    };
</script>

CONTROLLER

[HttpPost]
public JsonResult Create(Dado dado)
{
	return Json(new { dado = dado }, JsonRequestBehavior.DenyGet);
}

Sendo assim, a lógica e nomenclaturas correta. Pelo que eu vi no seu código, está faltando retornos e ficou mau explicado a sua duvida!

Observe o exemplo ele tem a codificação e retornos correto!

Deu certo aqui Dragoon.
muito obrigado ai pela força.

1 curtida