I'm getting the following error:
System.MissingMethodException: No parameterless constructor has been defined for this object.
My Controller:
using BecomexTeste.Models;
using BecomexTeste.Models.BracoViewModel;
using BecomexTeste.Service;
using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.Globalization;
using System.Linq;
using System.Web;
using System.Web.Mvc;
namespace BecomexTeste.Controllers
{
[Route("Braco")]
public class BracoController : Controller
{
private readonly IBracoService service;
public BracoController(IBracoService service)
{
this.service = service;
}
[HttpGet]
public JsonResult GetBraco()
{
var braco = service.BuscaBraco();
return new JsonResult { Data = braco, JsonRequestBehavior = JsonRequestBehavior.AllowGet };
}
[HttpPost]
public ActionResult Update(UpdateBracoViewModel model)
{
if (ModelState.IsValid)
{
var braco = new Braco
{
CotoveloDireito = model.CotoveloDireito,
PulsoDireito = model.PulsoDireito,
CotoveloEsquerdo = model.CotoveloEsquerdo,
PulsoEsquerdo = model.PulsoEsquerdo,
};
service.UpdateBraco(braco);
}
return View("~/Views/Home/Index.cshtml", model);
}
}
JS should look for data View:
@section scripts{
<script>
$(document).ready(function () {
var braco = [];
var cabeca = [];
BuscaDadosCabecaBraco();
function BuscaDadosCabecaBraco() {
braco = [];
cabeca = [];
$.ajax({
type: "GET",
url: '@Url.Action("GetBraco", "Braco")',
success: function (data) {
$.each(data, function (i, v) {
braco.push({
CotoveloEsquerdo: v.CotoveloEsquerdo,
PulsoEsquerdo: v.PulsoEsquerdo,
CotoveloDireito: v.CotoveloDireito,
PulsoDireito: v.PulsoDireito
});
});
},
error: function (error) {
alert('Não foi possivel carregar dados do braço');
}
});
$.ajax({
type: "GET",
url: '@Url.Action("GetCabeca", "Cabeca")',
success: function (data) {
$.each(data, function (i, v) {
cabeca.push({
Rotacao: v.CotoveloEsquerdo,
Inclinacao: v.PulsoDireito
});
});
},
error: function (error) {
alert('Não foi possivel carregar dados da cabeça');
}
});
}
$('.geraMovimentoCabeca').on('click', function (event) {
var button = $(event.relatedTarget);
var cabeca = button.data('cabeca');
if (cabeca == "inclinacao") {
var inclinacao = button.data('inclinacao');
} else {
var rotacao = button.data('rotacao');
}
if (typeof inclinacao !== 'undefined') {
cabeca.Inclinacao = inclinacao;
} else {
cabeca.Rotacao = rotacao;
}
$.ajax({
type: "POST",
url: "/Cabeca/Update",
data: {
"Rotacao": cabeca.Rotacao,
"Inclinacao": cabeca.Inclinacao
},
success: function (data) {
alert("Enviou");
},
error: function (error) {
alert('Não foi possivel enviar dados da cabeça');
}
});
});
});
</script>
}
Interface Service:
public interface IBracoService
{
void UpdateBraco(Braco braco);
Braco BuscaBraco();
}
And the service itself:
public class BracoService : IBracoService
{
private Banco banco;
public BracoService(Banco _banco)
{
this.banco = _banco;
}
public void UpdateBraco(Braco Braco)
{
Braco BracoBanco = BuscaBraco();
BracoBanco.CotoveloDireito = Braco.CotoveloDireito;
BracoBanco.PulsoDireito = Braco.PulsoDireito;
BracoBanco.CotoveloEsquerdo = Braco.CotoveloEsquerdo;
BracoBanco.PulsoEsquerdo = Braco.PulsoEsquerdo;
this.banco.SaveChanges();
}
public Braco BuscaBraco()
{
Braco BracoEncontrada = this.banco.Bracos.FirstOrDefault();
return BracoEncontrada;
}
}