Skip to content

All attributes

AttributePurposeParameters
[UiForm]Mark for form generationName?, Layout?
[UiFormGroup("name")]Define field groupLabel?, Order? (AllowMultiple)
AttributePurposeParameters
[UiFormField]Customize fieldLabel?, Placeholder?, HelpText?, Order?, Group?
[UiFormIgnore]Exclude from form
[UiFormHidden]In data but not rendered
[UiFormOrder(n)]Explicit orderingint order
[UiFormReadOnly]Read-only field
[UiFormDisabled]Disabled field
[UiFormSection("group")]Assign to groupstring group
[UiFormConditional("field", "value")]Conditional visibilityOperator?
AttributeControlExtra
[TextArea]Multi-line textRows?
[Select]DropdownType enumType or params string[]
[RadioGroup]Radio buttonsType enumType or params string[]
[Checkbox]Toggle
[DatePicker]Date selectorMin?, Max?
[TimePicker]Time selector
[DateTimePicker]Date + time
[FilePicker]File uploadAccept?, Multiple?
[ColorPicker]Color selector
[RichText]Rich text editor
[Slider]Range sliderMin, Max, Step?
[PasswordInput]Masked input
AttributePurposeParameters
[UiTable]Mark for table generationName?, DefaultPageSize?, PageSizes?, DefaultSort?, DefaultSortDirection?, SchemaUrl?
AttributePurposeParameters
[UiTableColumn]Customize columnLabel?, Sortable?, Filterable?, Format?, Order?, IsVisible?, Width?
[UiTableIgnore]Exclude from table
AttributePurposeParameters
[OneToMany]One-to-many on ICollection<T>ForeignKey?, Label?, SchemaUrl?, FormSchemaUrl?
[OneToOne]One-to-one on navigation propertyForeignKey?, Label?, SchemaUrl?, FormSchemaUrl?
AttributePurposeParameters
[Entity]Generate IEntityTypeConfiguration<T> for EF CoreTableName?, Schema?
AttributePurposeParameters
[RowAction("name")]Per-row action buttonLabel, Icon?, Endpoint, Method?, Confirmation?, Permission? (AllowMultiple)
[ToolbarAction("name")]Global toolbar actionLabel, Icon?, Endpoint, Method?, Confirmation?, Permission?, SelectionMode? (AllowMultiple)
[Permission("name")]Required view permission
[ColumnPermission("col", "perm")]Per-column permission(AllowMultiple)
[DataFilter("prop")]Vertical data filtering(AllowMultiple)
AttributePurposeParameters
[Computed]Marks virtual/calculated column
[ColumnStyle]Conditional stylingWhen, Severity (danger/warning/success/info/muted) (AllowMultiple)
  1. ExplicitSchemaUrl = "/custom/url" on the attribute itself
  2. From target type[UiTable(SchemaUrl = "/api/tables/county")] on T itself
  3. Convention — strip View suffix, lowercase → /api/tables/{name} (e.g. CountyView/api/tables/county)

FormSchemaUrl (available on [OneToMany]/[OneToOne]) follows the same pattern but checks for [UiForm] on the target type.

This means you typically declare SchemaUrl once on the child type’s [UiTable] and it propagates to all parents that reference it.

  • All public properties included unless [UiFormIgnore] / [UiTableIgnore]
  • UI hint auto-detected from C# type: string → text, bool → checkbox, enum → select, DateTime → datePicker
  • Labels humanized from property names: FirstName → “First Name”
  • A class can have both [UiForm] and [UiTable]

When referenced, validation attributes are automatically included in form field metadata:

AttributeJSON output
[ZRequired]"validation": { "required": true }
[ZMinLength(n)]"validation": { "minLength": n }
[ZMaxLength(n)]"validation": { "maxLength": n }
[ZRange(min, max)]"validation": { "min": min, "max": max }
[ZEmail]"validation": { "email": true }
[ZUrl]"validation": { "url": true }
[ZMatch("regex")]"validation": { "pattern": "regex" }
[ZNotEmpty]"validation": { "notEmpty": true }

Also recognizes System.ComponentModel.DataAnnotations equivalents ([ZRequired], [ZMinLength], [ZMaxLength], [ZRange], [StringLength]).

When referenced, [DtoOnly(DtoTarget.Create)] and [DtoOnly(DtoTarget.Update)] flags appear in form field descriptors — the client can show/hide fields based on create vs. update mode.

No project-level dependencies — detection is by attribute FQN at compile time.