jeudi 16 mars 2017

MVC checkbox Get

Im new to MVC asp.net i try to implement a search panel with several checkbox to filter a table data but i have a problem: i cant retain value of input checked after submit (formMethod.Get).

How can I solve?

any other suggest are very appreciated

My model :

public class OrdineView
    {
        public int anno { get; set; }

        public Int32 nrOrdine { get; set; }

        public string centro { get; set; }

        [DataType(DataType.Date), DisplayFormat(DataFormatString = "{0:d}")]
        public DateTime? data { get; set; }

        public String codice { get; set; }

        public String ragsoc { get; set; }

        [DisplayFormat(DataFormatString = "{0:C}")]
        public Nullable<double> importo;

    }

I have a Search model:

public class OrdiniSearchModel
    {
        public  int? anno {get;set;}
        public String[] Distinzione {get;set;}

    }

    public class OrdiniBusinessLogic
    {
        private NORTHWNDEntities1 db;

        public OrdiniBusinessLogic()
        {
            db = new NORTHWNDEntities1();
        }

        public IQueryable<OrdineView> GetOrdini(OrdiniSearchModel ordiniSearch)
        {

            var queryOrdineView = (from ordine in db.ORDINI
                                   join cliente in db.CLIENTI on ordine.Codcli equals cliente.Codana
                                   select new OrdineView
                                   {
                                       anno = ordine.Anno,
                                       nrOrdine = ordine.Numord,
                                       centro = ordine.Codcen,
                                       data = ordine.Datord,
                                       codice = ordine.Codcli,
                                       ragsoc = cliente.Ragso1,
                                       importo = ordine.Totord
                                   }).ToList().AsQueryable();

            var model = queryOrdineView;


            if (ordiniSearch.anno != null)
            {
                model = model.Where(o => o.anno == ordiniSearch.anno);
            }
            if (ordiniSearch.Distinzione != null && ordiniSearch.distinzione.Count() > 0)
            {
                List<string> distinzioniSelezionate = new List<string>();
                foreach (var item in ordiniSearch.Distinzione)
                {
                    distinzioniSelezionate.Add(item);
                }
                model = model.Where(o => distinzioniSelezionate.Contains(o.distinzione));

            }
            return model;
        }

    }
My Controller:
 public ActionResult Index(OrdiniSearchModel searchModel, int? pageNumber )
        {
            ViewBag.Anno = db.ORDINI.Select(o => new { o.Anno }).
                                                     Distinct().OrderByDescending(o => o.Anno).Select(o => o.Anno);

            var searchLogic = new OrdiniBusinessLogic();
            var model = searchLogic.GetOrdini(searchModel);

            return View(model.OrderBy(i => i.codice).ToPagedList(pageNumber ?? 1, 10));           
        }

in my view i have 

 <input name="Distinzione"  type="checkbox"  value="001">001
<input name="Distinzione"  type="checkbox"  value="002">002

...and so on

after submit i get data correctly but lose checked state

pleas help me to improve




Aucun commentaire:

Enregistrer un commentaire