944 messaggi dal 11 febbraio 2013
Ho una pagina con diversi filtri e una tabella che mostra i risultati della ricerca.

Dato che il modello contiene molti record vorrei che al primo caricamento fossero mostrati solamente gli input relativi ai filtri.

Come posso dire al controller di ritornare un modello vuoto al primo caricamento.

Con una soluzione webform ovviamente usavo Page.Ispostback!

come fare con un progetto MVC?

Grazie
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao,
il tuo model avrà un punto in cui va impostata la lista di risultati. Ebbene, alla prima richiesta, in quel punto imposta una lista vuota, in modo che la tua view non vada in errore quando prova a ciclare la lista col foreach.

//Nella tua action
ilTuoModel.Risultati = new List<Oggetto>(); //Lista vuota, perché non ci sono risultati
return View(ilTuoModel);


ciao,
Moreno

Enjoy learning and just keep making
944 messaggi dal 11 febbraio 2013
Ciao e grazie... ma non ho capito come dire alla action che si tratta della prima richiesta.
Inoltre nel mio caso ho creato una classe che costituisce la View in questo modo:
public class FatturaPagedList
{
public IEnumerable<FatturaView> PagesFatture { get; set; }
public IEnumerable<string> Distinzione { get; set; }
}
public ActionResult Index(FattureSearchModel fattureSearch, int ? pageNumber)
        {
            string codiceAgente = CodiceAgente();
           
            var searchLogic = new FattureBusinessLogic();
            var pagesFatture = searchLogic.GetFatture(fattureSearch, codiceAgente);

            List<string> distinzioniSelezionate = new List<string>();
            if (fattureSearch.distinzione != null && fattureSearch.distinzione.Count() > 0)
            {
                foreach (var item in fattureSearch.distinzione)
                {
                    distinzioniSelezionate.Add(item);
                }
            }

            FatturaPagedList model = new FatturaPagedList
            {
                PagesFatture = pagesFatture.OrderBy(i => i.Codice).ThenBy(i => i.Data).ToPagedList(pageNumber ?? 1, 10),
                Distinzione = distinzioniSelezionate
            };

            return View(model);
        }


Ho capito bene che posso passare un oggetto vuoto ma non capisco in questo caso come fare

In una situazione piu semplice posso fare
model = new List<FatturaView> { new FatturaView
{ Anno = 0, Cliente = ""... }
}.AsQueryable();

ma poi ad ogni submit (FormMethod.Get) ottengo sempre la tabella vuota.
Modificato da jjchuck il 22 marzo 2017 10.25 -
944 messaggi dal 11 febbraio 2013
forse ho capito:

se nel search model dove ritorno i dati metto un check sui filtri posso fare uno switch per popolare il model...l'unica controindicazione è che debbo mostrare una riga con dati "farlocchi".

var model = queryFatturaView;// prende le entità esistenti nel database...

if (Search.anno == null && Search.distinzione == null &&
Search.inizio==null && Search.fine==null...)
{

model = new List<FatturaView> { new FatturaView
{
Anno = 0,
Codice = "00001",
Data = new DateTime(1999,1,1),
Importo = 0,
Distinzione = "",
...
}
}.AsQueryable();
}
//filtri non nulli
if (Search.anno != null)
{

model = model.Where(o => o.Anno == Search.anno);
}
...ecc
return model
Modificato da jjchuck il 22 marzo 2017 11.59 -
944 messaggi dal 11 febbraio 2013
Si potrebbe anche fare con le partialView e Ajax.BeginForm ?
944 messaggi dal 11 febbraio 2013
In base ai suggerimenti di Brightsoul ho eliminato le cartelle bin e obj e package

https://1drv.ms/u/s!AnlkAP7BW8x-gcUGBJ1zTstY_ueDsQ

se potete dare un'occhiata vi ringrazio

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.