Array
(
)

Recarregar página com MVC

Pjava
   - 08 out 2014

Fiz uma função na model e a chamada na controller. Aí, passo para o jquery e o comando de gravar no BD é excutado com êxito. Acontece, que quando eu termino de gravar, a tela continua com as informações anteriores, ou seja, os textbox preenchidos, os checkbox's checados. Como eu faço para após a gravação no BD(sucesso do ajax) eu recarregar a página ou os campos alterados somente? Abaixo minha chamada jquery. O alerta com a mensagem pode ser desconsiderado, se necessário.
#Código

var checkedItemsUn = {}, checkedItemsMot = {}, checkedItemsPdv = {}, counter = 0;

function Gravar() {

    $("#check-list-box li.active").each(function (idx, li) {
        checkedItemsUn[counter] = $(li).text();
        counter++;
    });

    counter = 0

    $("#check-list-box-mot li.active").each(function (idx, li) {
        checkedItemsMot[counter] = $(li).text();
        counter++;
    });

    counter = 0

    $("#check-list-tipo li.active").each(function (idx, li) {
        checkedItemsPdv[counter] = $(li).text();
        counter++;
    });

    counter = 0
    str = "";

    $.ajax({
        url: '/CadastroCargo/GravaResponsavel',
        datatype: 'json',
        contentType: 'application/json;charset=utf-8',
        type: 'POST',
        data: JSON.stringify({ _responsavel: $('#txtResponsavel').val(), _ativo: $('#ckbAtivo').prop("checked"), _Un: checkedItemsUn,
            _motivo: checkedItemsMot, _pdv: checkedItemsPdv, _nivel: $('#cbxNivelResp').val()
        }),
        success: function (data) {

            str += '<div class="alert alert-success col-md-6">';
            str += '<button type="button" class="close" data-dismiss="alert"></button>';
            str += '<h4>Operação realizada com sucesso!</h4>';
            str += 'Registro gravado no banco de dados com sucesso.';
            str += '</div>';

            $('#alerta').html(str);

            str = "";
        },
        error: function (error) {
        }
    })
}

Joel Rodrigues
   - 08 out 2014

Você pode:
1) redirecionar para uma outra página (com uma mensagem de sucesso, por exemplo, ou para a home);
2) usar o método load da jQuery para recarregar a view dentro de uma div, fazendo uma chamada assíncrona à action que chama essa mesma tela.

Pjava
   - 08 out 2014

Ok, redirecionar para outra página já estava, mas o cara quer que fique na mesma, porque o usuário fará vários cadastros no mesmo e para ele ir para a Home e depois voltar é mais trabalhoso e nesse aspecto concordo, por isso o post.

Pjava
   - 08 out 2014

E como eu faço isso:

Citação:

usar o método load da jQuery para recarregar a view dentro de uma div, fazendo uma chamada assíncrona à action que chama essa mesma tela.

Pjava
   - 08 out 2014

Fiz assim e funcionou: window.location.href = '/CadastroCargo/CadastroCargo';

Joel Rodrigues
   - 08 out 2014

Vai ser mais ou menos assim:
#Código

$("#minhaDiv").load("/CadastroCargo/CadastroCargo");

Pjava
   - 08 out 2014

Assim deu certo:

#Código

window.location.href = '/CadastroCargo/CadastroCargo';