در دات نت سیستم ولیدیشن فرم ها به این صورت هست که شما ابتدا یک کلاس برای فرم میسازید و با DataAnnotations ها فیلد ها رو مزین میکنید و فریم ورک دات نت ولیدیشن ها رو براتون تولید میکنه. برای ایمیل این دو گزینه رو داریم که هر دو درست کار نمیکنن:
که کاراکتر @ رو تشخیص نمیده! (مگه ایمیل آدرس بدون @ داریم؟)
2. [EmailAddress] :
که دات (.) رو تشخیص نمیده! (مگه ایمیل آدرس بدون com. داریم؟)
این ها در هیچ نوع پروژه وب asp.net ای کار نمیکنه ، چه در web form ، چه در mvc و چه در asp.net core mvc یا blazor.
اگر نمیخواین پکیجی برای DataAnnotations ها نصب کنید بهترین راه حل RegularExpression هست:
[Regular@"^[A-Za-z0-9](([_\.\-]?[a-zA-Z0-9]+)*)@([A-Za-z0-9]+)(([\.\- ]?[a-zA-Z0-9]+)*)\.([A-Za-z]{2,})$", ErrorMessage = "ایمیل معتبر نیست.")]
البته پیشنهاد میکنم برای متن خطا (ErrorMessage) از یک کلاس Constants استفاده کنید که قابلیت مدیریت در یکجا رو داشته باشید. (در پروژه blazor wasm در لایه Shared این کلاس رو بزارید) :
namespace Attendance.Shared; public static class Constants { public const string RequireMsg = "لطفا {0} را وارد کنید." public const string RangeMsg = "{0} باید در بازه {1} و {2} باشد." public const string MinLengthMsg = "{0} نباید کمتر از {1} کاراکتر باشد." public const string MaxLengthMsg = "{0} نباید بیشتر از {1} کاراکتر باشد." public const string RegularExpressionMsg = "{0} معتبر نیست." public const string StringLengthMsg = "{0} باید بین {2} کاراکتر و {1} کاراکتر باشد." public const string RemoteMsg = "این {0} قبلا در سیستم ثبت شده است." public const string CompareMsg = "{1} با تکرار آن تطابق ندارد." }
حالا برای متن خطا از این کلاس استفاده کنید :
[Regular@"^[A-Za-z0-9](([_\.\-]?[a-zA-Z0-9]+)*)@([A-Za-z0-9]+)(([\.\- ]?[a-zA-Z0-9]+)*)\.([A-Za-z]{2,})$", ErrorMessage = Constants.RegularExpressionMsg)]