در دات نت سیستم ولیدیشن فرم ها به این صورت هست که شما ابتدا یک کلاس برای فرم میسازید و با 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)]