PDA

View Full Version : گفتگو: Validate کردن خودکار فرم‌ها و گریدویوهای مقید شده به یک DataTable



t0pk0d3r
شنبه 24 آبان 1393, 16:09 عصر
من تا اینجا می‌دونم که وقتی که یک گرید یا فرم (منظور تکست‌باکس‌ها و سایر کنترل‌هایی که به یک سطر بایند شدن) در حال Validate شدن هست، می‌شه اونجا مقادیر رو Validate کنیم، که در غیر اینصورت اگه این کار رو نکنیم، خود ADO بر اساس نوع داده ستون متناظر اون فیلد این کار رو می‌کنه و در صورت لزوم یک استثنا تولید می‌کنه.
حالا اگه خودمون بخوایم Validate رو انجام بدیم مجبوریم برای هر فیلد بیایم یکی یکی دستی این کار رو بکنیم.
من دنبال یک روشی هستم که بتونم این کار رو به صورت تعریف یک سری قوانین مثل annotation های EntityFramework روی ستون‌های DataTable ها انجام بدم.

یک روش این می‌تونه باشه که یک متودی داشته باشیم که روی همه ستون‌ها بچرخه و بر اساس نوع اون، Validation رو انجام بده. (ولی نمی‌دونم چطور قوانین رو ست کنم توش)


foreach (DataRow row in dt.Rows)
{
foreach (DataColumn column in dt.Columns)
{
if (row[column] != null)
{
string value = row[column].ToString();
if (!String.IsNullOrEmpty(value))
{
// Do something
}
}
}
}




توی این پست (http://www.dotnettips.info/post/1099/fluentvalidation-1) آقای زارع FluentValidation رو معرفی کردن که روی Business Object ها می‌شه ازشون استفاده کرد.
مثالی از یک قانون نوشته شده با استفاده از این کتابخونه:
using FluentValidation;


public class CustomerValidator : AbstractValidator<Customer>
{
public CustomerValidator
{
RuleFor(customer => customer.Surname).NotNull();
}
}