Exemplo n.º 1
0
        public Task BindModelAsync(ModelBindingContext bindingContext)
        {
            //Recuperiamo i valori grazie ai value provider
            string search  = bindingContext.ValueProvider.GetValue("Search").FirstValue;
            string orderBy = bindingContext.ValueProvider.GetValue("OrderBy").FirstValue;

            int.TryParse(bindingContext.ValueProvider.GetValue("Page").FirstValue, out int page);
            bool.TryParse(bindingContext.ValueProvider.GetValue("Ascending").FirstValue, out bool ascending);

            //Creiamo l'istanza del CourseListInputModel
            CoursesOptions       options    = coursesOptions.CurrentValue;
            CourseListInputModel inputModel = new(search, page, orderBy, ascending, options.PerPage, options.Order);

            //Impostiamo il risultato per notificare che la creazione è avvenuta con successo
            bindingContext.Result = ModelBindingResult.Success(inputModel);

            //Restituiamo un task completato
            return(Task.CompletedTask);
        }
Exemplo n.º 2
0
//IOptionsMonitor<CoursesOptions> coursesOptions
        public CourseListInputModel(string search, int page, string orderby, bool ascending, CoursesOptions coursesOptions)
        {
            if (!coursesOptions.Orderd.Allow.Contains(orderby))
            {
                orderby   = coursesOptions.Orderd.By;
                ascending = coursesOptions.Orderd.Ascending;
            }
            page = Math.Max(1, page); //Prende il valore massimo tra i due passati

            string direction = ascending ? "ASC" : "DESC";

            Search    = search;
            Page      = page;
            OrderBy   = orderby;
            Ascending = ascending;
            Limit     = (int)coursesOptions.PerPage;
            Offset    = (page - 1) * Limit;
        }