محمد کمائی - Telegram : @komayi
محمد کمائی - Telegram : @komayi
خواندن ۱ دقیقه·۳ سال پیش

ولیدیشن ایمیل در دات نت - Email validation in .net

در دات نت سیستم ولیدیشن فرم ها به این صورت هست که شما ابتدا یک کلاس برای فرم میسازید و با DataAnnotations ها فیلد ها رو مزین میکنید و فریم ورک دات نت ولیدیشن ها رو براتون تولید میکنه. برای ایمیل این دو گزینه رو داریم که هر دو درست کار نمیکنن:

  1. [DataType(DataType.EmailAddress)] :

که کاراکتر @ رو تشخیص نمیده! (مگه ایمیل آدرس بدون @ داریم؟)

2. [EmailAddress] :

که دات (.) رو تشخیص نمیده! (مگه ایمیل آدرس بدون com. داریم؟)

این ها در هیچ نوع پروژه وب asp.net ای کار نمیکنه ، چه در web form ، چه در mvc و چه در asp.net core mvc یا blazor.

اگر نمیخواین پکیجی برای DataAnnotations ها نصب کنید بهترین راه حل RegularExpression هست:

[Regular@&quot^[A-Za-z0-9](([_\.\-]?[a-zA-Z0-9]+)*)@([A-Za-z0-9]+)(([\.\-‌ ]?[a-zA-Z0-9]+)*)\.([A-Za-z]{2,})$&quot, ErrorMessage = &quotایمیل معتبر نیست.&quot)]

البته پیشنهاد میکنم برای متن خطا (ErrorMessage) از یک کلاس Constants استفاده کنید که قابلیت مدیریت در یکجا رو داشته باشید. (در پروژه blazor wasm در لایه Shared این کلاس رو بزارید) :

namespace Attendance.Shared; public static class Constants { public const string RequireMsg = &quotلطفا {0} را وارد کنید.&quot public const string RangeMsg = &quot{0} باید در بازه {1} و {2} باشد.&quot public const string MinLengthMsg = &quot{0} نباید کمتر از {1} کاراکتر باشد.&quot public const string MaxLengthMsg = &quot{0} نباید بیشتر از {1} کاراکتر باشد.&quot public const string RegularExpressionMsg = &quot{0} معتبر نیست.&quot public const string StringLengthMsg = &quot{0} باید بین {2} کاراکتر و {1} کاراکتر باشد.&quot public const string RemoteMsg = &quotاین {0} قبلا در سیستم ثبت شده است.&quot public const string CompareMsg = &quot{1} با تکرار آن تطابق ندارد.&quot }

حالا برای متن خطا از این کلاس استفاده کنید :

[Regular@&quot^[A-Za-z0-9](([_\.\-]?[a-zA-Z0-9]+)*)@([A-Za-z0-9]+)(([\.\-‌ ]?[a-zA-Z0-9]+)*)\.([A-Za-z]{2,})$&quot, ErrorMessage = Constants.RegularExpressionMsg)]
asp netblazorDataAnnotationsemaildatatype
C# , .net core & angular & blazor , sql server
شاید از این پست‌ها خوشتان بیاید