ASP.net Core MVC Awesome v. 10 release notes
Date: 25 May 2026Changelog
- addedPivotGridcontrol, can set fields, columns, rows and measures to vizualise complex data sets. - Strongly Typed
Gridcontrol, using
Html.Awex().Grid<T>(), can define columns using lambda expressions, automatically setting the type for each column - Grid and Pivot Grid resizable container. - Grid FilterRow default filter controls based on column type. -
NoHide(),
AutoHide()Column extensions - use
this.AweJson(model)to return json model with default PropertyNamingPolicy, this will bypass the possible default auto CamelCasing of properties, in MVC5 it will also handle the serialization of Expando objects (used by the Grid); - Aggregates button and popup for the Grid, used to defined aggregates for the grid groups. - Aggregates are calculated per group regardless of paging, so aggregate values will reflect the whole group not just the group items present in the current page. - Grid groups (and Pivot Grid Dimension groups) that may span on multiple pages are considered partial and are rendered with a dashed line. - Filter button and popup for the Grid, filters options are available for each column based on its type, also IsIn and IsNotIn filter operators using remote search editors for filter value selection. - automatic filtering in the GridModelBuilder, based on the Filter Popup or Filter Row values. - can use lambda with
.Selectto define Bind value for a column, example:
o => o.Meals.Select(m => m.Name), which will render in the cell value the meals names for that row. - auto popup filter for collection bound columns, example
o => o.Meals.Select(m => m.Name)-
PasswordInputControl, with show/hide password button. - Setting name (id) for controls is not required anymore, an name will be generated if name is null -
Omu.AwesomeMvc.Settingsrenamed to
AwesomeSettings-
GridModelBuildercreates a projection over the source based on the
Columns`'s `Bindvalues (unless
GridModelBuilder.Mapis set) to query only the necessary columns. When
GridModelBuilder.Mapis set all the properties of the
GridModelBuilder<T>underlying type T are selected. - Can define additional Grid Row Properties using
GridModelBuildermethods: -
Prop(propertyExpression, name, renderFunc)- define an extra property to the grid row, -
PropVal(propertyExpression, name)- avoids default rendering based on type -
Compute(computeFunc, name)- computed property based on the already projected row model (which includes Column.Bind properties plus Prop and PropVal added properties) Prop and PropVal can use a lambda expression containing nested Select or Count calls, example:
o => o.Meals.Select(m => m.Id)or
o => o.Meals.Count()- Can set
AwesomeSettings.ToArrayAsyncand
AwesomeSettings.CountAsync, for query execution with
CancellationToken, used by the GridModelBuilder and PivotGridModelBuilder, useful for EF Core to use
ToArrayAsyncand
CountAsyncmethods instead of the default
ToArray()and
Count()calls. (see AweSqlDemo Program.cs for example) -
GridModelBuilderand
PivotGridModelBuilder
BuildAsyncmethods accept
CancellationTokenparameter - Grid
OutsideFilterextension method for filtering the grid using custom controls placed outside the grid. -
AutoFilterEditor options extension for defining an editor that will have its value sent to the grid data source (url/dataFunc) in the GridParams.Filters, and the value will be handled automatically by the GridModelBuilder - Grid filters values will be saved based on Grid Persistence. - Can reorder Grid Groups in the UI (by dragging them) - can set data to select editors from the server by setting the
Dataproperty, example:
@(Html.Awe().DropdownList(new DropdownListOpt {
Data = new List<KeyContent>...
- Grid .Main() extension method, will set default grid features:
page size, loading indicator, columns selector, filterable, reorderable, resizable columns, resizable container, aggregates, filtering.
- gridExportUtil.jsmodule, used to export grid data to various formats - dropmenu (and select editors like DropdownList, Multiselect, etc.) filter results order based on best match. - dropmenu filter by query split words, consider node parent content.
Breaking Changes:
- must reference nuget package System.Linq.Dynamic.Core - Settings renamed to AwesomeSettings - Removed strongly typed .Parent Grid extension, non strongly typed can be used instead, or combine Parent(string, string) with Awe().NameFor, example:.Parent(Html.Awe().NameFor(o => o.Search), "name")-
GridModelBuilder.ToArrayAsynctype changed to
Func<IQueryable, CancellationToken, Task<object[]>>and can be set globally by setting
AwesomeSettings.ToArrayAsync-
GridModelBuilder.CountAsynctype changed to
Func<IQueryable, CancellationToken, Task<int>>and can be set globally by setting
AwesomeSettings.CountAsync- Awesome controls in Editor Templates should use Name = "" or string.Empty (not null), or if using Name = null set Value = Model - By default the Grid now tries to create a projection based on GridParams.Cols, if you need to avoid that set GridModelBuilder.Map (for example to
o => o) -
GroupInfo(parameter in
GridModelBuilder.MakeFootermethod) is not Generic anymore, and
GroupInfo.Itemsis
object[]. If
GridModelBuilder.Mapis set,
GroupInfo.Itemscan be cast to the
GridModelBuilderunderlying generic type T. -
GroupInfo.Items,
GroupInfo.AllItemsare object collections instead of the
GridModelBuilderunderlying generic type T, when
GridModelBuilder.Mapis set, they can be cast to
IEnumerable<T>
Applies to all version
Comments