How do I pass the right string value to my controller? from the error when returning to Edit View

Asked

Viewed 72 times

2

 **// Tentei destas duas formas e não consegui nenhuma!**
   // Onde tem item.nome é de um foreach que me retorna nome de uma pessoa



 <span data-toggle='tooltip' data-placement='bottom'><a onclick='funcaoEditar(" + item.nome + ")'><i class='fa fa-pencil text-success'></i></a></span>                           

                                             OU

 <a data-toggle='tooltip' data-placement='bottom' title='' data-original-title='Editar Unidade' href='/Operador/ProcessoDesenvolvimento/EditarInstrutor?nome=" + item.nome + "'><i class='fa fa-pencil text-success'></i></a>

//Controller

[HttpGet] 
    public ActionResult EditarInstrutor(string nome)
    {

        return View();
    }

//Jquery function

function funcaoEditar(nome) {
    alert(nome);
    $.ajax({
        url: '@Url.Action("EditarInstrutor", "ProcessoDesenvolvimento")',
        data: JSON.stringify({ nome: nome }),
        contentType: 'application/json; charset=utf-8',
        type: "POST",
        cache: false,
        success: function (data) {
        },
        error: function () { }
    });
}
  • What mistake it makes?

  • resource not found

  • 2

    I don’t understand very well, you are doing a POST or a Get? from what I understand, Ajax, is a post, but the Action you receive is a GET?

2 answers

0

If your Alert(name) is returning the right name and you want to make a change, ie a 'PUT''.

Your controller:

[HttpPut] 
    public JsonResult EditarInstrutor(string nome)
    {

      return Json("Dados alterado com sucesso!!");
    }

Your JS:

function funcaoEditar(nome) {
    //alert(nome);
   var dados = { nome: nome}; //parametro a ser passado pro controller
   jQuery.ajax({
        type: "PUT", // tipo do verbo
        url: "/EditarInstrutor/EditarInstrutor", //nome do controlador e action
        dataType: "json", //tipo de retorno
        data: dados, //paramentros
        success: function (data) {
          //faça algo se tudo for bem sucedido
          },
        error: function (request, status, erro) { 
           //faça algo se der erro
          },
        complete: function (jqXHR, textStatus) {
            //colocar aqui algo que deseja que faça ao terminar todo o processo              
        }
    });
}

0

Change your Controller to use the Post method:

    [HttpPost] 
    public ActionResult EditarInstrutor(string nome)
    {

        return View();
    }

Browser other questions tagged

You are not signed in. Login or sign up in order to post.