none
Post com Ajax indo para a página do post RRS feed

  • Pergunta

  • Depois que eu executar o post com o ajax, como eu posso ir para a página do post sem perder os dados, ou como posso abrir a página via ajax dando o post.

    É uma situação ao qual eu necessito por conta de filtros na página, ao clicar em cima de uma opção, eu quero recarregar os dados com esse filtro.

    terça-feira, 10 de fevereiro de 2015 12:11

Respostas

  • Você poderá fazer assim:

    $(document).ready(function () {
        $('#MeuControle').change(function () {
            $("form").submit();
        });
    });

    Certifique apenas que sua página possua apenas um form. Caso exista mais de um, chame pelo id "$('#NomeForm')" ao invés de apenas "$('form')".

    Caso não resolva, deixe-nos saber.

    Saudações,
    Kallebe Lins

    • Marcado como Resposta CEFL terça-feira, 10 de fevereiro de 2015 18:58
    terça-feira, 10 de fevereiro de 2015 18:52

Todas as Respostas

  • Olá,

    Você poderá fazer POST completo ou parcial.

    POST Completo (SUBMIT)

    Você poderá criar um classe que representará os campos em sua tela - modelo dos dados.

    public class CadastroModelView
    {
        public string Nome { get; set; }
        public string CEP { get; set; }
    }

    Na primeira página os nomes (atributo name) dos controles deverão corresponder às propriedades da classe criada.

    <form action="/MinhaController/ActionOutraPagina" method="post">
        Nome: <input id="Nome" name="Nome" type="text" value="" />
        CEP: <input id="CEP" name="CEP" type="text" value="" />
        <input type="submit" value="Postar Outra Pagina" class="btn btn-default" />
    </form>

    A página que receberá a chamada deverá conter uma ação que receberá o modelo como parâmetro.

    [HttpPost]
    public ActionResult ActionOutraPagina(CadastroModelViewmodel)
    {
        // tratar aqui

        return View(model);
    }

    Vale ressaltar que o ASP.NET MVC associa os atributos as propriedades do modelo, portanto, seu "model" será apresentado como uma instância de "CadastroModel" com as propriedades correspondentes preenchidas.

    Na outra página você poderá manipular o modelo.

    @model WebApplication7.Models.CadastroModel
    ...
    @using (Html.BeginForm())
    {
        @Html.AntiForgeryToken()
        
        <div class="form-horizontal">
            <h4>Outra Página</h4>
            <hr />
            @Html.ValidationSummary(true)
            <div class="form-group">
                @Html.LabelFor(model => model.Nome, new { @class = "control-label col-md-2" })
                <div class="col-md-10">
                    @Html.EditorFor(model => model.Nome)
                    @Html.ValidationMessageFor(model => model.Nome)
                </div>
            </div>

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

            ...
            
        </div>
    }

    POST Parcial (AJAX)

    Você também poderá carregar uma visualização parcial, veja:
    https://cmatskas.com/update-an-mvc-partial-view-with-ajax/

    Você poderá utilizar o método GET para implementar carregamento parcial.

    Caso não resolva, deixe-nos saber.

    Saudações,
    Kallebe Lins

    • Marcado como Resposta CEFL terça-feira, 10 de fevereiro de 2015 18:12
    • Não Marcado como Resposta CEFL terça-feira, 10 de fevereiro de 2015 18:42
    terça-feira, 10 de fevereiro de 2015 17:29
  • Desculpe, aqui estou mais uma vez...

    Se eu quiser dar um post no formulário no evento change de um elemento, eu consigo de que forma? não quero carregar view partial, se eu der um post no controller, sem ser pelo botão, através de javascript ou jquery, já resolve o meu problema.

    terça-feira, 10 de fevereiro de 2015 18:43
  • Você poderá fazer assim:

    $(document).ready(function () {
        $('#MeuControle').change(function () {
            $("form").submit();
        });
    });

    Certifique apenas que sua página possua apenas um form. Caso exista mais de um, chame pelo id "$('#NomeForm')" ao invés de apenas "$('form')".

    Caso não resolva, deixe-nos saber.

    Saudações,
    Kallebe Lins

    • Marcado como Resposta CEFL terça-feira, 10 de fevereiro de 2015 18:58
    terça-feira, 10 de fevereiro de 2015 18:52
  • show, era isso que eu precisava...Parabéns Kallebe, arrebentou...
    terça-feira, 10 de fevereiro de 2015 18:58