Blazor Server - التعامل مع النماذج (Forms) والتحقق من المدخلات (Validation)

Blazor Server - التعامل مع النماذج (Forms) والتحقق من المدخلات (Validation)

النماذج (Forms) في Blazor Server تُمثل طريقة قوية لجمع البيانات من المستخدمين، مع دعم مدمج للتحقق من المدخلات (Validation) بشكل تلقائي وديناميكي.

🔹 المكونات الأساسية للتعامل مع النماذج:

  • <EditForm>: هو العنصر الرئيسي لإنشاء نموذج.
  • <InputText>, <InputNumber>, <InputDate>: عناصر إدخال تدعم التحقق التلقائي وربط البيانات.
  • <ValidationMessage>: لعرض رسائل الخطأ لكل حقل معين.
  • <ValidationSummary>: لعرض جميع أخطاء النموذج مجمعة.
  • <DataAnnotationsValidator>: مسؤول عن تفعيل التحقق بناءً على Data Annotations.
---

🔹 مثال عملي متكامل على نموذج مع تحقق:


// ملف RegisterForm.razor

@page "/register"

<EditForm Model="@user" OnValidSubmit="HandleValidSubmit" OnInvalidSubmit="HandleInvalidSubmit">
    <DataAnnotationsValidator />
    <ValidationSummary />

    <div>
        <label>الاسم:</label>
        <InputText @bind-Value="user.Name" class="form-control" />
        <ValidationMessage For="() => user.Name" />
    </div>

    <div>
        <label>البريد الإلكتروني:</label>
        <InputText @bind-Value="user.Email" class="form-control" />
        <ValidationMessage For="() => user.Email" />
    </div>

    <div>
        <label>العمر:</label>
        <InputNumber @bind-Value="user.Age" class="form-control" />
        <ValidationMessage For="() => user.Age" />
    </div>

    <br />
    <button type="submit" class="btn btn-primary">تسجيل</button>
</EditForm>

@code {
    private User user = new();

    private void HandleValidSubmit()
    {
        Console.WriteLine("✅ تم إرسال البيانات بنجاح!");
    }

    private void HandleInvalidSubmit()
    {
        Console.WriteLine("❌ توجد أخطاء في البيانات.");
    }

    public class User
    {
        [Required(ErrorMessage = "الاسم مطلوب.")]
        [StringLength(100, ErrorMessage = "يجب ألا يتجاوز الاسم 100 حرف.")]
        public string Name { get; set; }

        [Required(ErrorMessage = "البريد الإلكتروني مطلوب.")]
        [EmailAddress(ErrorMessage = "صيغة البريد الإلكتروني غير صحيحة.")]
        public string Email { get; set; }

        [Range(18, 99, ErrorMessage = "العمر يجب أن يكون بين 18 و99.")]
        public int Age { get; set; }
    }
}
---

🔹 شرح مفصل للكود السابق:

  • EditForm يستخدم خاصيتي Model لربط البيانات وOnValidSubmit وOnInvalidSubmit للتعامل مع النجاح أو الفشل في الإرسال.
  • DataAnnotationsValidator يسمح للنموذج باستخدام التحقق من خلال السمات (Attributes) الموجودة على الكلاس User.
  • ValidationSummary يعرض جميع الأخطاء أعلى النموذج دفعة واحدة.
  • InputText / InputNumber مكونات ذكية تتعامل مع التحقق والربط تلقائيًا.
  • ValidationMessage يعرض رسائل الخطأ بجانب كل حقل محدد.
---

🔹 ملاحظات إضافية:

  • يجب أن تكون الخصائص في الكلاس المرتبط بـ public حتى تعمل مع EditForm.
  • يمكن تخصيص التنسيقات للرسائل عبر CSS لإظهار الأخطاء بطريقة مرئية جذابة.
  • بإمكانك استخدام قواعد تحقق مخصصة Custom Validation لو أردت مرونة أكثر.

✅ بفضل هذه الآلية، يمكنك بناء نماذج تفاعلية آمنة وسهلة الاستخدام داخل Blazor.

تعليقات

المشاركات الشائعة من هذه المدونة

HTML - Text Formatting تنسيقات النص

1.1 SQL Introduction

Entity Framework - مقدمة عن Entity Framework