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!
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
Curtir tópico
+ 0
Responder
Clique aqui para fazer login e interagir na Comunidade :)