PDA

View Full Version : سوال: Validation



hastiam
یک شنبه 20 فروردین 1391, 14:54 عصر
سلام
من یک input از نوع text دارم که می خوام هر وقت خالی بود پیغام بده که " لطفا نام را وارد کنید " که این کار رو با استفاده از دستور زیر انجام میدم و درست کار میکنه:


[Required(ErrorMessage="نام را وارد کنید")]

حالا می خوام هر وقت یک مقدار خاص مثلا مقدار 0 (صفر) را هم وارد کرد همین پیغام دیده شود برای اینکار باید چکار کنم؟
لطفا کمکم کنید.

amir-yeketaz
یک شنبه 20 فروردین 1391, 23: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, 14:30 عصر
میتونی از Regular Expression هم استفاده کنی که فقط کاراکتر قبول کنه
[RegularExpression(@"[a-zA-Z][a-zA-Z\s]+", ErrorMessage = "لطفا فقط کاراکتر وارد نمایید.")]

mojahed
یک شنبه 18 تیر 1391, 21:40 عصر
میشود از jquery هم استفاده کرد.