Codeer.LowCode.Blazor
1.3.0
See the version list below for details.
dotnet add package Codeer.LowCode.Blazor --version 1.3.0
NuGet\Install-Package Codeer.LowCode.Blazor -Version 1.3.0
<PackageReference Include="Codeer.LowCode.Blazor" Version="1.3.0" />
<PackageVersion Include="Codeer.LowCode.Blazor" Version="1.3.0" />
<PackageReference Include="Codeer.LowCode.Blazor" />
paket add Codeer.LowCode.Blazor --version 1.3.0
#r "nuget: Codeer.LowCode.Blazor, 1.3.0"
#:package Codeer.LowCode.Blazor@1.3.0
#addin nuget:?package=Codeer.LowCode.Blazor&version=1.3.0
#tool nuget:?package=Codeer.LowCode.Blazor&version=1.3.0
Codeer.LowCode.Blazor
Codeer.LowCode.Blazor is a library designed to integrate execution engine-type low-code features into your Blazor app. It allows for the rapid creation of most functionalities using no-code/low-code, while specialized features can be crafted with the same level of detail as full-scratch professional coding. As a result, it is possible to develop satisfactory applications quickly and at a low cost. Users can customize the application themselves after its release.
Codeer.LowCode.Blazor.Templates
Recommended for Projects That
- Want to save on cost and time
- Want to effectively utilize RDB
- Want to leverage existing data and systems
- Have specific features in mind
- Desire customization after release
Create Screens with Ease
Create screens freely with a combination of canvas layout and grid layout and flow layout. It's possible to create not just regular screens but also dialogs. Interaction between UI components can be achieved with no-code or minimal scripting. Essential elements like sidebar, header, and footer are provided, and those with specific preferences can customize with pro-code.
Seamless RDB Integration
Associate forms and DB tables for input and output of data. Linking multiple forms allows representation of Join or 1N relationships. Forms can also be linked to Views, enabling easy implementation of BI functions. Common database operations such as logical deletion, optimistic locking, and tracking of creation/update information are included. Change history can also be maintained.
More Freedom with Scripts
Write in syntax nearly identical to C#. The API design allows for implementation of features with minimal coding. Code completion makes implementation easy, and customized functions can be called with pro-code. Execution is primarily on the client-side, but server-side execution is also supported.
- General computational operations
- Screen controls
- Execution of WebAPI
- Editing Excel/PDF creation
Excel Integration Support
Supports not only general data input/output but also allows for creating templates in Excel and modifying them for report generation. Conversion to PDF is also possible.
Authentication & Authorization
Provide generic cookie authentication or default authentication using Azure Active Directory in your template code. Other authentication methods can also be customized. Authorization allows for access control at the application, screen, and data levels.
Implement Specific Features with Pro-Code
In some cases, special screens/features are necessary. As Codeer.LowCode.Blazor is a Blazor library, .NET code can be added for such implementations. Moreover, creating components allows for their use in various places.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net8.0
- Codeer.LowCode.Blazor.Licensing (>= 1.3.0)
- Microsoft.AspNetCore.Components.WebAssembly (>= 8.0.4)
- Microsoft.AspNetCore.Http.Abstractions (>= 2.1.1)
- Microsoft.AspNetCore.WebUtilities (>= 8.0.4)
- Microsoft.CodeAnalysis.CSharp (>= 4.9.2)
NuGet packages (9)
Showing the top 5 NuGet packages that depend on Codeer.LowCode.Blazor:
| Package | Downloads |
|---|---|
|
Codeer.LowCode.Blazor.Designer
This is a library that adds LowCode functionality to Blazor apps. |
|
|
Codeer.LowCode.Bindings.Blazor-ApexCharts
You can use Blazor-ApexCharts with Codeer.LowCode.Blazor. |
|
|
Codeer.LowCode.Bindings.Blazor-ApexCharts.Designer
You can use Blazor-ApexCharts with Codeer.LowCode.Blazor. |
|
|
Codeer.LowCode.Bindings.Fluent.Blazor
You can use FluentUI with Codeer.LowCode.Blazor. |
|
|
Codeer.LowCode.Blazor.Extras
Extra field components for Codeer.LowCode.Blazor. Includes Calendar, Gantt Chart, Task Board (Kanban), Rich Text Editor, Color Picker, Marker List, and Password Hash fields. |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 1.3.1 | 79 | 6/4/2026 |
| 1.3.0 | 77 | 6/4/2026 |
| 1.2.65 | 120 | 5/26/2026 |
| 1.2.64 | 116 | 5/15/2026 |
| 1.2.63 | 114 | 5/12/2026 |
| 1.2.62 | 106 | 5/7/2026 |
| 1.2.61 | 211 | 5/6/2026 |
| 1.2.60 | 103 | 5/5/2026 |
| 1.2.59 | 95 | 5/5/2026 |
| 1.2.58 | 354 | 4/27/2026 |
| 1.2.57 | 103 | 4/21/2026 |
| 1.2.56 | 172 | 4/16/2026 |
| 1.2.55 | 222 | 4/10/2026 |
| 1.2.54 | 121 | 4/2/2026 |
| 1.2.53 | 217 | 3/31/2026 |
| 1.2.52 | 122 | 3/24/2026 |
| 1.2.51 | 149 | 3/16/2026 |
| 1.2.50 | 162 | 3/9/2026 |
| 1.2.49 | 170 | 2/24/2026 |
| 1.2.48 | 124 | 2/20/2026 |
This release adds device/screen-size landing for page frames, proportional column scaling, list replace modes, and real-time cascading select fields, and unifies the type-conversion rules of the scripting engine. It includes breaking changes that may affect existing scripts.
[ New Features ]
- Page Frames: Application-root page frames can now be selected by device and screen size. Each page frame has a TargetDevice (Any / PC / Touch) and a WidthFrom (minimum screen width). On root-URL access (for example after login), the page frame that matches the current device and screen width is opened; among the matches the largest WidthFrom that fits wins, and ties are broken by Priority. Existing apps are unaffected (defaults are Any and no width).
- Grid Layout: Added IsProportionalScale on grid rows. When enabled, each column's Width is treated as a ratio rather than a fixed pixel size, so the columns grow and shrink proportionally as the row width changes. (Every column in the row must have a Width; MinWidth / MaxWidth, column resize, wrapping, and flow layout cannot be combined with this mode.)
- List Field: Added a ReplaceMode (data replacement). "All" deletes all rows matching the search condition and re-inserts the current rows; "UpdateAsDeleteInsert" turns updates into delete-then-insert so that swapping unique-key values between rows no longer hits constraint violations. The default ("None") keeps the previous add/update/delete behavior.
- Number Field: Added an OnInput event that fires in real time on every keystroke (and continuously while dragging a slider), before the value is committed and OnDataChanged fires. The script function receives the in-progress value as an argument ("void Func(decimal? value)"; null while the input cannot be parsed as a number). The field's Value itself is still updated only when the input is committed, as before.
- Select Field: Cascading (dependent) select fields now refresh their candidates in real time when the field they depend on changes, and a selected value that is no longer a valid candidate is cleared automatically.
- Select Field: A loaded value that is not among the current candidates is now added to the candidate list (shown with its stored display text) and kept selected, so opening existing data no longer blanks the display or silently changes the stored value. The value also survives candidate reloads (cascading refresh, SetCandidates) as long as it is unchanged; once the user selects a different value, out-of-candidate values are cleared as before. If the display text collides with an existing candidate, the value is shown in parentheses after the text (with a numbered suffix if still ambiguous).
[ Breaking Changes ]
- Scripting: Converting a fractional number to an integer type now truncates toward zero instead of rounding (matching C# cast semantics). This applies consistently to assignments, initializers, casts, function arguments, and return values. For example, (int)1.9 and "int x = 1.9;" now yield 1 (previously 2).
- Scripting: Converting a non-null value that cannot be converted into a non-nullable type now raises a runtime error. In particular, reassigning an unconvertible value to a typed variable previously became null silently; it now raises an error. (Assigning null to a non-nullable value type still produces its default value, for example "int x = null;" yields 0 and "DateTime x = null;" yields DateTime.MinValue; conversion into a nullable type still results in null.)
- Scripting: Casting a string to a numeric type now performs the conversion instead of returning the string unchanged. For example, (int)"5" now yields 5.
- Scripting: (int)null now yields 0 instead of null, consistent with "int x = null;".
- Scripting: Fixed numeric widening in method overload resolution. Previously the widening check used an incorrect type order, so passing byte / sbyte / short / ushort / uint arguments could select an unintended overload. It now follows C# implicit numeric conversion rules, which may change which overload is chosen for such calls (cast the argument explicitly to pin the overload).
[ Bug Fixes ]
- Scripting: == and != comparisons between decimal and double / float no longer raise an error (for example, comparing a number field with a literal such as 1.5).
- Scripting: A fractional-format string assigned or cast to an integer type is now converted by truncation instead of raising an error (for example, "int x = "1.9";" yields 1).
- Search: A NotIn condition with an empty value list now matches all rows instead of none, consistent with in-memory matching. This affects both C# data-access queries and designer-defined search conditions.
- Sidebar/Menu: Links pointing to a page frame that the current user cannot access are now hidden, consistent with the existing behavior for links to inaccessible modules. Previously such page-frame links stayed visible and only showed an access-denied message when clicked.
- ExecuteSql: Fixed a defect where the DataReader was not disposed for the Reader method type, which could leave the connection busy and block subsequent commands on the same connection/transaction.
- ExecuteSql: Input and write-back now use the data member mapped to the DB column instead of always using Value, so fields whose stored value is not Value (for example a File field's file name) are read and written correctly.
- Search Layout: Fixed handling when a search layout references a missing or invalid layout name.
- Search Layout: Fixed an exception that occurred when a Link field was set to read-only in a search layout.
[ Other ]
- Scripting: Added sbyte as a supported type keyword.
- Data access (C#): Added a Take extension to the typed SearchCondition for limiting the number of rows fetched.
- Page Frames: Added a Priority setting. When a user can access more than one application-root page frame, the one with the highest Priority opens first; equal values keep the defined order. Existing apps are unaffected (the default of 0 preserves the previous order-based behavior).
- Data access (C#): SearchDelete now blocks dangerous empty executions. Deleting with no search condition raises an error, and deleting every row must be requested explicitly, to prevent accidentally wiping out an entire table.
- Fields: A field whose IsEnabled is false now shows the standard disabled (gray) background, in both list cells and detail layouts, so it is visually distinct from a read-only (transparent) field. This applies to all UI field types (text, number, select, boolean, radio, date/time, link, button, file). In a list cell the gray fills the whole cell; in a detail layout it covers the control area.
To restore the previous appearance (disabled = no background), add the following to your project's app.css (it can also be placed in a PageFrames/{name}.css side-car file to revert only that page frame):
#app td input.form-control:disabled,
#app td textarea.form-control:disabled,
#app td select.form-select:disabled,
#app td .cl-disabled-bg,
#app td .link-field-container.disabled,
#app td button.btn-outline-secondary:disabled {
background: transparent !important;
}
#app td .cl-disabled-bg-fill::before {
background: transparent !important;
}