Modal in the controller

Asked

Viewed 141 times

0

I am working on a page that has an Order model and there is a button that when pressed opens a product modal, with a table with all products.

As I click on a line a product is added to the Ordempagmento page the product selected in the modal. But this modal has pagination made this way:

Displaying

@(Model.Results.PageCount < Model.Results.PageNumber ? 0 : Model.Results.PageNumber)

of @Model.Results.PageCount pages.

@Html.PagedListPager(Model.Results, page => Url.Action("Index", new { page })) 

So when I click the modal will go to the Order Index and not to the products with the next page because the feature Url.Action will not go through post(Url.Action("/PopUpProdutos", Can anyone help me a method that does by post?

[HttpPost]
        [ValidateAntiForgeryToken]
        public ActionResult _PopUpProdutos(ProdutoIndexViewModel produtoIndexViewModel)

inserir a descrição da imagem aqui

inserir a descrição da imagem aqui

Controller

public ActionResult _PopUpProdutos() 
{ 

    var _produtoRepository = new ProdutoRepository(); 
    var _produtotipoRepository = new ProdutoTipoRepository(); 
    var _produtogrupoRepository = new ProdutoGrupoRepository(); 
    var _produtofamiliaRepository = new ProdutoFamiliaRepository(); 
    var _fabricanteRepository = new FabricanteRepository(); 


    var filiais = _filialRepository.GetAllAtivo(); 
    var filiaisViewModels = Mapper.Map<IEnumerable<Filial>, IEnumerable<FilialViewModel>>(filiais); 

    var produtoTipos = _produtotipoRepository.GetAllAtivo(); 
    var produtoTiposViewModels = Mapper.Map<IEnumerable<ProdutoTipo>, IEnumerable<ProdutoTipoViewModel>>(produtoTipos); 

    var produtoGrupos = _produtogrupoRepository.GetAllAtivo(); 
    var produtoGruposViewModels = Mapper.Map<IEnumerable<ProdutoGrupo>, IEnumerable<ProdutoGrupoViewModel>>(produtoGrupos); 

    var produtoFamilias = _produtofamiliaRepository.GetAllAtivo(); 
    var produtoFamiliasViewModels = Mapper.Map<IEnumerable<ProdutoFamilia>, IEnumerable<ProdutoFamiliaViewModel>>(produtoFamilias); 

    var fabricantes = _fabricanteRepository.GetAllAtivo(); 
    var fabricantesViewModels = Mapper.Map<IEnumerable<Fabricante>, IEnumerable<FabricanteViewModel>>(fabricantes); 

    var produtos = _produtoRepository.GetAllAtivo(); 
    var produtosDetailsViewModels = Mapper.Map<IEnumerable<Produto>, IEnumerable<ProdutoDetailsViewModel>>(produtos); 

    int pageSize = WebConfig.PageSize; 
    int pageNumber = 1; 

    var produtoFilterViewModel = new ProdutoFilterViewModel 
    { 
        Filiais = filiaisViewModels, 
        ProdutoTipos = produtoTiposViewModels, 
        ProdutoGrupos = produtoGruposViewModels, 
        ProdutoFamilias = produtoFamiliasViewModels, 
        Fabricantes = fabricantesViewModels, 
        NomeOrderByClassName = "fa fa-sort", 
        OrderBy = ProdutoOrderByViewModel.Default 
    }; 

    var produtoIndexViewModel = new ProdutoIndexViewModel 
    { 
        Filters = produtoFilterViewModel, 
        Results = produtosDetailsViewModels.ToPagedList(pageNumber, pageSize), 
        IsPageChange = false 
    }; 

    ViewBag.NavigationMenuPrimary = NavigationMenuPrimary; 
    ViewBag.NavigationMenuSecondary = NavigationMenuSecondary; 
    ViewBag.NavigationMenuTertiary = NavigationMenuTertiary; 

    return PartialView("_PopUpProdutos", produtoIndexViewModel); 

}

[HttpPost] 
[ValidateAntiForgeryToken] 
public ActionResult _PopUpProdutos(ProdutoIndexViewModel produtoIndexViewModel) 
    { 
    var _produtoRepository = new ProdutoRepository(); 
    var _produtotipoRepository = new ProdutoTipoRepository(); 
    var _produtogrupoRepository = new ProdutoGrupoRepository(); 
    var _produtofamiliaRepository = new ProdutoFamiliaRepository(); 
    var _fabricanteRepository = new FabricanteRepository(); 

    var filiais = _filialRepository.GetAllAtivo(); 
    var filiaisViewModels = Mapper.Map<IEnumerable<Filial>, IEnumerable<FilialViewModel>>(filiais); 

    var produtoTipos = _produtotipoRepository.GetAllAtivo(); 
    var produtoTiposViewModels = Mapper.Map<IEnumerable<ProdutoTipo>, IEnumerable<ProdutoTipoViewModel>>(produtoTipos); 

    var produtoGrupos = _produtogrupoRepository.GetAllAtivo(); 
    var produtoGruposViewModels = Mapper.Map<IEnumerable<ProdutoGrupo>, IEnumerable<ProdutoGrupoViewModel>>(produtoGrupos); 

    var produtoFamilias = _produtofamiliaRepository.GetAllAtivo(); 
    var produtoFamiliasViewModels = Mapper.Map<IEnumerable<ProdutoFamilia>, IEnumerable<ProdutoFamiliaViewModel>>(produtoFamilias); 

    var fabricantes = _fabricanteRepository.GetAllAtivo(); 
    var fabricantesViewModels = Mapper.Map<IEnumerable<Fabricante>, IEnumerable<FabricanteViewModel>>(fabricantes); 

    var produtosFilters = Mapper.Map<ProdutoFilterViewModel, ProdutoFilter>(produtoIndexViewModel.Filters); 
    var produtos = _produtoRepository.GetAllFilterAtivo(produtosFilters); 

    var produtoDetailsViewModels = Mapper.Map<IEnumerable<Produto>, IEnumerable<ProdutoDetailsViewModel>>(produtos); 

    if (!produtoIndexViewModel.IsPageChange) 
    { 
        produtoIndexViewModel.Page = 1; 
    } 

    int pageSize = WebConfig.PageSize; 
    int pageNumber = (produtoIndexViewModel.Page ?? 1); 

    produtoIndexViewModel.Filters.Filiais = filiaisViewModels; 
    produtoIndexViewModel.Filters.ProdutoTipos = produtoTiposViewModels; 
    produtoIndexViewModel.Filters.ProdutoGrupos = produtoGruposViewModels; 
    produtoIndexViewModel.Filters.ProdutoFamilias = produtoFamiliasViewModels; 
    produtoIndexViewModel.Filters.Fabricantes = fabricantesViewModels; 
    produtoIndexViewModel.Results = produtoDetailsViewModels.ToPagedList(pageNumber, pageSize); 
    ModelState.Remove("IsPageChange"); 
    produtoIndexViewModel.IsPageChange = false; 

    produtoIndexViewModel.Filters.NomeOrderByClassName = "fa fa-sort"; 
    switch (produtoIndexViewModel.Filters.OrderBy) 
    { 

        case ProdutoOrderByViewModel.Nome: 
            produtoIndexViewModel.Filters.NomeOrderByClassName = "fa fa-sort-asc"; 
            break; 
        case ProdutoOrderByViewModel.NomeDesc: 
            produtoIndexViewModel.Filters.NomeOrderByClassName = "fa fa-sort-desc"; 
            break; 

    } 

    ViewBag.NavigationMenuPrimary = NavigationMenuPrimary; 
    ViewBag.NavigationMenuSecondary = NavigationMenuSecondary; 
    ViewBag.NavigationMenuTertiary = NavigationMenuTertiary; 

    return PartialView("_PopUpProdutos", produtoIndexViewModel); 

}
  • Well, from what I understand, you wanted to click on one of the page numbers that appear inside the modal because all the pagination is in the correct modal ?

  • Yes that’s correct.

1 answer

0


The method Url.Action makes your request for get, so a jquery function was added to do it by post.

$('.pagination a').click(function () {
      var url = $(this).attr('href');
      var page = getURLParameter(url, 'page');

      $("#Page").val(page);
      $("#IsPageChange").val(true);

      $("#searchForm").submit();

      return false;
});

Browser other questions tagged

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