View Full Version : سوال: Validation
hastiam
یک شنبه 20 فروردین 1391, 15:54 عصر
سلام
من یک input از نوع text دارم که می خوام هر وقت خالی بود پیغام بده که " لطفا نام را وارد کنید " که این کار رو با استفاده از دستور زیر انجام میدم و درست کار میکنه:
[Required(ErrorMessage="نام را وارد کنید")]
حالا می خوام هر وقت یک مقدار خاص مثلا مقدار 0 (صفر) را هم وارد کرد همین پیغام دیده شود برای اینکار باید چکار کنم؟
لطفا کمکم کنید.
amir-yeketaz
دوشنبه 21 فروردین 1391, 00:13 صبح
سلام ... راههای مختلفی برای اعتبارسنجی وجود داره که راه ساده ی اون ModelState هست و اضافه کردن ارور با استفاده از AddModelError داخل اکشن متود مربوطه ...
راه پیشرفته => نوشتن اعتبارسنج سفارشی :
ابتدا کلاسی را پیاده سازی کنید که از کلاس ValidationAttribute ارث بری داشته باشد و متود IsValid آن را override کنید :
طبق درخواست شما :
public class NotZeroAttribute : ValidationAttribute
{
public NotZeroAttribute()
{
ErrorMessage = "Please enter your input expect zero";
}
public override bool IsValid(object value)
{
if(value.ToString() == "0")
return false;
return true;
}
}
و مانند صفت Required میتونید استفاده کنید :
public class Person
{
[NotZero(ErrorMessage = "صفر وارد نکنید")]
[Required(ErrorMessage = "نام را وارد کنید")]
public string Name { get; set; }
public int Age { get; set; }
}
اکشن های مربوطه :
[HttpGet]
public ActionResult CreatePerson()
{
return View(new Person());
}
[HttpPost]
public ActionResult CreatePerson(Person person)
{
if(ModelState.IsValid)
{
return RedirectToAction("Index");
}
return View();
}
موفق باشید ...
mo.esmp
دوشنبه 21 فروردین 1391, 15:30 عصر
میتونی از Regular Expression هم استفاده کنی که فقط کاراکتر قبول کنه
[RegularExpression(@"[a-zA-Z][a-zA-Z\s]+", ErrorMessage = "لطفا فقط کاراکتر وارد نمایید.")]
mojahed
یک شنبه 18 تیر 1391, 22:40 عصر
میشود از jquery هم استفاده کرد.
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.