Skip to main content

Validation, ErrorProvider and feedback

The Module 4 editor learns to say no before the database does: DataAnnotations on TicketEditModel, TicketValidator (annotations plus the cross-field rule Closed tickets cannot have a future due date), errorProvider icons, a validationSummaryLabel, Save disabled while the model is invalid, and a friendly message when the database still rejects a save (a duplicate ticket number).

Run it

cd "LearnWisej-Samples/Data Binding with EF Core Course/Module 5/SupportDesk.Web"
dotnet run -f net10.0 --urls http://localhost:5405

Tests: dotnet test SupportDesk.Tests (the negative cases are in TicketValidatorTests.cs and DuplicateNumberTests.cs).

What to try

The editor now has Title, Customer, Category, Status, Priority, Due date, Agent, Description, Escalate as urgent, the validationSummaryLabel, Delete, Cancel and Save.

  • Add Ticket: Save starts disabled with Fill in Title, Customer and Category.; fill them and Save enables.
  • Empty title / no customer: an errorProvider icon on the field and the message in the summary; Save stays disabled.
  • Edit a ticket, set Status to Closed with a future due date: the icon sits on the due date and the rule shows in the summary. Fix it and the messages clear.
  • Open the editor twice in a row: the previous run's icons are gone.
  • Duplicate ticket number: a unique-index violation becomes one plain sentence in an AlertBox (FriendlyDatabaseErrors.TicketSaveRejected), the lookups reload, and the full exception goes to the server console. It is reproduced by DuplicateNumberTests (SaveAsync(model, forceDuplicateNumber: true)) or by two sessions saving a new ticket at the same moment.