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)
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 ?
– Rodrigo
Yes that’s correct.
– jp_almeida