AgentSkillsCN

Edit Controls

编辑控件

SKILL.md

WssBlazorControls - Edit Controls Library

A Blazor component library providing form controls with validation, accessibility, and consistent styling.

Quick Reference: Datatype to Control Mapping

DatatypeControlNotes
stringEditStringSingle-line text input
string (multiline)EditTextAreaMulti-line text input
int, decimal, double, etc.EditNumber<T>Numeric input with step support
DateTime, DateTime?EditDate<T>Date picker
boolEditBoolCheckbox
bool?EditBoolNullRadioThree-state radio (Yes/No/Not Set)
TEnumEditSelectEnum<TEnum>Dropdown from enum values
TEnumEditRadioEnum<TEnum>Radio buttons from enum values
string (from list)EditSelectString<T>Dropdown from string list
string (from list)EditRadioStringRadio buttons from string list
TValue (custom)EditSelect<TValue>Dropdown with custom options
TValue (custom)EditRadio<TValue>Radio buttons with custom options
List<string>EditCheckedStringListMulti-select checkboxes from string list
List<TEnum>EditCheckedEnumList<TEnum>Multi-select checkboxes from enum
Display onlyEditDisplayRead-only formatted value

Basic Usage Pattern

All controls follow the same pattern:

razor
<EditControlName @bind-Value="model.Property" Field="@(() => model.Property)" />
  • @bind-Value - Two-way binding to the model property
  • Field - Expression for validation and auto-configuration

Configuration via Data Annotations

Controls auto-configure from model attributes:

csharp
public class MyModel
{
    [Required]
    [DisplayName("Full Name")]
    [Description("Enter your legal name")]
    [ToolTip("Used for official documents")]
    public string? Name { get; set; }
}
razor
<EditString @bind-Value="model.Name" Field="@(() => model.Name)" />
<!-- Automatically shows label "Full Name", description, tooltip, and required indicator -->

Form Setup

razor
<EditForm Model="@_model" OnValidSubmit="HandleSubmit">
    <ObjectGraphDataAnnotationsValidator />  <!-- Always use this validator -->

    <EditString @bind-Value="_model.Name" Field="@(() => _model.Name)" />
    <EditNumber @bind-Value="_model.Age" Field="@(() => _model.Age)" />

    <button type="submit">Submit</button>
</EditForm>

Edit vs Read-Only Mode

Toggle IsEditMode on individual controls or use FormOptions for all controls:

razor
<CascadingValue Value="@(new FormOptions { IsEditMode = false })">
    <!-- All controls display read-only values -->
</CascadingValue>

Common Properties (All Controls)

PropertyTypeDescription
IsEditModeboolEdit (true) or read-only (false) mode
IsDisabledboolDisable user interaction
IsHiddenboolHide the control
IsRequiredboolShow required indicator (auto-detected from [Required])
Labelstring?Override auto-detected label
Descriptionstring?Override auto-detected description
Tooltipstring?Override auto-detected tooltip
ContainerClassstring?Additional CSS classes
HidingHidingMode?Smart hiding based on value state

Detailed Documentation