در مواقع بسیاری پیشمیاد که در توسعهی لاجیک پروژهها، نیازمند روند اعتبارسنجی و برگرداندن exception به سمت بخشهای دیگر هستیم. معمولا توسعه دهندگان دات نت به صورت توکار و دستی این validationها را انجام میدهند. یک مثال برایتان میزنم: public class Person
{
public string Firstname { get; private set; }
public string Lastname { get; private set; }
private Person(string firstname, string lastname)
{
...
در برنامههای ASP.NET Core، امکان دریافت تنظیمات برنامه از منابع مختلفی مانند فایلهای JSON وجود دارد که در نگارشهای اخیر آن، امکان اعتبارسنجی اطلاعات آنها به صورت توکار نیز اضافه شدهاست؛ مانند: services.AddOptions<BearerTokensOptions>()
.Bind(configuration.GetSection("BearerTokens"))
.Validate(bearerTokens =>
{
return bearerTokens.AccessTokenExpirationMinutes < be ...
در قسمت قبل با نحوهی پیاده سازی اعتبارسنجیهای سفارشی سمت کلاینت مخصوص کتابخانهی Fluent Validation آشنا شدیم. در این قسمت، یک حالت خاص همان نوع اعتبارسنجیهای سمت کلاینت را که remote validation نام دارد، بررسی میکنیم. در این حالت خاص، نیازی به کدنویسی جاوااسکریپتی خاصی نیست. چون زیرساخت آن به همراه unobtrusive jQuery Ajax خود ASP.NET Core ارائه میشود. در اینجا فقط نیاز است تا متادیتای خاص آنرا تولید کنیم. به عبارتی اینبار هدف ...
FluentValidation یک کتابخانهی اعتبارسنجی اطلاعات سمت سرور است و راهکاری را برای اعتبارسنجیهای سمت کلاینت ارائه نمیدهد؛ اما میتواند متادیتای مورد نیاز unobtrusive java script validation را تولید کند و به این ترتیب بسیاری از قواعد آن دقیقا همانند روشهای توکار اعتبارسنجی ASP.NET Core در سمت کلاینت نیز کار میکنند؛ مانند:
• NotNull/NotEmpty
• Matches (regex)
• InclusiveBetween (range)
• CreditCard
...
در قسمت قبل ، روش تعریف قواعد اعتبارسنجی را با استفاده از کتابخانهی Fluent Validation بررسی کردیم. در این قسمت میخواهیم این قواعد را به صورت خودکار به یک برنامهی ASP.NET Core معرفی کرده و سپس از آنها استفاده کنیم. روش اول: استفادهی دستی از اعتبارسنج کتابخانهی Fluent Validation
روشهای زیادی برای استفادهی از قواعد تعریف شدهی توسط کتابخانهی Fluent Validation وجود دارند. اولین روش، فراخوانی دستی اعتبارسنج، در م ...
روش مرسوم اعتبارسنجی اطلاعات مدلهای ASP.NET Core، با استفاده از data annotations توکار آن است که در بسیاری از موارد هم به خوبی کار میکند. اما اگر به دنبال ویژگیهای دیگری مانند نوشتن آزمونهای واحد برای اعتبارسنجی اطلاعات، جداسازی شرطهای اعتبارسنجی از تعاریف مدلها، نوشتن اعتبارسنجیهای پیچیده به همراه تزریق وابستگیها هستید، کتابخانهی FluentValidation میتواند جایگزین بهتر و بسیار کاملتری باشد. نصب کتابخانهی FluentValidation در ...
اگر بخواهیم یک Attribute سفارشی را برای اعتبارسنجی ایجاد کنیم، معمولا یک کلاس را ایجاد کرده و از ValidationAttribute ارث بری میکنیم و سپس متد IsValid آنرا override میکنیم؛ با توجه به نیازی که به آن Attribute داریم. به عنوان مثال در ادامه یک Attribute را ایجاد کردهایم که عمل مقایسهی دو خاصیت را انجام میدهد و اگر مقدار خاصیتی که ویژگی LowerThan بر روی آن قرار دارد، از مقدار خاصیت دیگری که باید با آن مقایسه شود، کمتر نباشد، یک خطا را به M ...
پروژه DNTFrameworkCore که قصد پشتیبانی از آن را دارم، یک زیرساخت سبک وزن و توسعه پذیر با پشتیبانی از طراحی چند مستاجری، با تمرکز بر کاهش زمان و افزایش کیفیت توسعه سیستمهای تحت وب مبتنی بر ASP.NET Core، توسعه داده شده است. اهدافی که این زیرساخت دنبال میکند ارائه ساختارهای مشترک بین پروژههای مختلف از جمله Cross-Cutting Concernها و ... دنبال کردن اصل DRY به منظور متمرکز شدن صرف برروی منطق تجاری سی ...
در پروژهای که در حال حاضر روی آن کار میکنم برای برخی موجودیتها، فرمهای ایجاد و ویرایش را یکی در نظر گرفتم و به تبع آن از ویوو مدل یکسانی هم برای این ویوو استفاده کردهام. اما مشکلی که وجود داشت این بود که برخی از فیلدها در حالت ویرایش در فرم نمایش داده نمیشد. درواقع در حالتی که ویوی مذکور در حالت ویرایش باز میشد چنین شرطی داشتم: @if (!Model.Id.HasValue)
{
<div class="form-group">
<label>رمز عبور</la ...
بعد از انتشار مطلب «Defensive Programming - بازگشت نتایج قابل پیش بینی توسط متدها »، بخصوص بخش نظرات آن و همچنین R&D در ارتباط با موضوع مورد بحث، در نهایت قصد دارم نتایج بدست آماده را به اشتراک بگذارم. پیش نیازها Exceptions for flow control: why not? Exception handling for flow control is EVIL! Replacing Throwing Exceptions with Notification in Validations نکات کار با استثناءها در دا ...