ASP.net Core MVC Awesome v. 10 release notes

Date: 25 May 2026

Changelog

- added
PivotGrid
control, can set fields, columns, rows and measures to vizualise complex data sets. - Strongly Typed
Grid
control, 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
.Select
to 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)
-
PasswordInput
Control, 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.Settings
renamed to
AwesomeSettings
-
GridModelBuilder
creates a projection over the source based on the
Columns`'s `Bind
values (unless
GridModelBuilder.Map
is set) to query only the necessary columns. When
GridModelBuilder.Map
is set all the properties of the
GridModelBuilder<T>
underlying type T are selected. - Can define additional Grid Row Properties using
GridModelBuilder
methods: -
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.ToArrayAsync
and
AwesomeSettings.CountAsync
, for query execution with
CancellationToken
, used by the GridModelBuilder and PivotGridModelBuilder, useful for EF Core to use
ToArrayAsync
and
CountAsync
methods instead of the default
ToArray()
and
Count()
calls. (see AweSqlDemo Program.cs for example) -
GridModelBuilder
and
PivotGridModelBuilder
BuildAsync
methods accept
CancellationToken
parameter - Grid
OutsideFilter
extension method for filtering the grid using custom controls placed outside the grid. -
AutoFilter
Editor 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
Data
property, 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.js
module, 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.ToArrayAsync
type changed to
Func<IQueryable, CancellationToken, Task<object[]>>
and can be set globally by setting
AwesomeSettings.ToArrayAsync
-
GridModelBuilder.CountAsync
type 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.MakeFooter
method) is not Generic anymore, and
GroupInfo.Items
is
object[]
. If
GridModelBuilder.Map
is set,
GroupInfo.Items
can be cast to the
GridModelBuilder
underlying generic type T. -
GroupInfo.Items
,
GroupInfo.AllItems
are object collections instead of the
GridModelBuilder
underlying generic type T, when
GridModelBuilder.Map
is set, they can be cast to
IEnumerable<T>


Applies to all version



Comments
By accessing this site, you agree to store cookies on your device and disclose information in accordance with our cookie policy and privacy policy .