ASP.NET MVC AJAX

27/04/2016

0

Criei uma aplicação em ASP.NET MVC, pedido e Item. Faz o cadastro do pedido. Mostra a tela do Item pra cadastrar na mesma pagina do pedido.

O meu problema e que o Ajax não esta chamando o Método Create do pedido pra salvar os dados no banco.

Segue os códigos:


View do pedido create
@model TestePedidoItem.Models.Pedido

@{
ViewBag.Title = "Create";
}

<h2>Create</h2>

@Html.AntiForgeryToken()

<div class="form-horizontal">
<h4>Pedido</h4>
<hr />
@Html.ValidationSummary(true, "", new { @class = "text-danger" })
<div class="form-group">
@Html.LabelFor(model => model.Data, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.Data, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.Data, "", new { @class = "text-danger" })
</div>
</div>

<div class="form-group">
@Html.LabelFor(model => model.Cliente, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.Cliente, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.Cliente, "", new { @class = "text-danger" })
</div>
</div>

<div class="form-group">
@Html.LabelFor(model => model.Valor, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.Valor, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.Valor, "", new { @class = "text-danger" })
</div>
</div>

<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<a href="#" onclick="SalvarPedido();" class="btn btn-default" >salvar Pedido</a>
</div>
</div>
</div>


<div id="divItens" style="display:none;">
</div>

<div>
@Html.ActionLink("Back to List", "Index")
</div>

@section Scripts {

@Scripts.Render("~/bundles/jqueryval")
<script src="~/Scripts/Pedidos.js"></script>

}

Segue o script que slava o pedido:

function SalvarPedido() {

// debugger;

//Data
var data= $("#Data").val();

//Cliente
var cliente= $("#Cliente").val();

//Valor
var valor= $("#Valor").val();

var token = $('input[name="__ResquestVerificationToken"]').val();
var tokenadr = $('form[action="/Pedidos/Create"] input[name="__ResquestVerificationToken"]').val();
var headers = {};
var headersadr = {};
headers['__ResquestVerificationToken'] = token;
headersadr['__ResquestVerificationToken'] = tokenadr;

//Gravar
var url = "/Pedidos/Create";

$.ajax({
url: url
, type: "POST"
, datatype: "json"
, headers: headersadr
, data: { PedidoId: 0, Data: data, Cliente: cliente, Valor: valor, __ResquestVerificationToken: token }
, success: function (data) {
if (data.Resultado > 0) {
ListarItens(data.Resultado);
}
}
});

}

function ListarItens(idPedido) {

var url = "/Itens/ListarItens";

$.ajax({
url: url
, type: "GET"
, data: { id: idPedido }
, datatype: "html"
, sucess: function (data) {
var divItens = $("#divItens");
divItens.empty();
divItens.show();
divItens.html(data);
}
});
}


Segue o código do PedidoController que salva os dados no banco:

[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create(Pedido pedido)
{
if (ModelState.IsValid)
{
db.Pedidos.Add(pedido);
db.SaveChanges();
}

return Json(new { Resultado = pedido.PedidoId}, JsonRequestBehavior.AllowGet);
}

Sabe qual e o erro?

obrigado!
André Silveira

André Silveira

Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar