سلام .
تو این قسمت میخوایم یه کنترل ولیدیتور رو خودمون بسازیم تا بتونه طول رشته ی وارد شده رو چک کنه :
کدهای این قسمت با رای اکثریت بر خلاف نظر خودم با #C نوشته خواهند شد .
ابتدا Name space های زیر رو در یک کلاس جدید که به LengthValidator.cs نام گذاری کردیم اضافه میکنیم :
کد:
using System;
using System.Web.UI;
using System.Web.UI.WebControls;
بعد در فضای نامی myControls کلاس LengthValidator رو از BaseValidator به ارث میبریم ( inherit میکنیم )
کد:
namespace myControls
{
/// <summary>
/// Validates the length of an input field
/// </summary>
public class LengthValidator : BaseValidator
{
code
}
}
و بعد یک پراپرتی ایجاد میکنیم تا حد اکثر طول رو بشه در اون set کرد .
کد:
int _maximumLength = 0;
public int MaximumLength
{
get { return _maximumLength; }
set { _maximumLength = value; }
}
حالا متد EvaluateIsValid را override میکنیم ( implement )
کد:
protected override bool EvaluateIsValid()
{
String value = this.GetControlValidationValue(this.ControlToValidate);
if (value.Length > _maximumLength)
return false;
else
return true;
}
آمادست !
حالا مونده که مثل ولیدیتور های دیگه ازش استفاده کنیم :
البته با تفاوت هایی :
اولیش اینه که باید کنترل رو register کنیم . زیر دایرکتیو page این کد رو اضافه میکنیم :
کد:
<%@ Register TagPrefix ="custom" Namespace = "myControls" %>
و بعد کد ولیدیتور رو در مکان مناسب قرار میدیم :
کد:
<custom:LengthValidator
id="myval"
ControlToValidate="textbox1"
Text="(Must be less than 10 characters)"
MaximumLength="10"
Runat="server" />
کنترل textbox1 یادتون نره !
حالا این ولیدیتور خود به خود ولیدیت نمیکنه !باید به دکمه ی submit مقداری کد اضافه کنیم :
کد:
If (myval.IsValid ) {
// do somthing
}
و در فرم وی بی نت :
کد:
If myval.IsValid Then
' Do something
End If
کد کامل کلاس آماده برای کپی و پیست !! :
کد:
using System;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace myControls
{
/// <summary>
/// Validates the length of an input field
/// </summary>
public class LengthValidator : BaseValidator
{
int _maximumLength = 0;
public int MaximumLength
{
get { return _maximumLength; }
set { _maximumLength = value; }
}
protected override bool EvaluateIsValid()
{
String value = this.GetControlValidationValue(this.ControlToValidate);
if (value.Length > _maximumLength)
return false;
else
return true;
}
}
}
همونطور که میدونید کلاس های #C در پروژه های VB.Net هم قابل استفاده اند اما اگه نیاز به کد VB.net کلاس برای توصعه داشتید کافیه بگید نسخه ی vb.net اش رو هم بنویسم .
اگه سوالی نکته مبهمی یا مشکلی بود من در خدمتم . دوستان اگر هم جایی اشتباه کردم لطفا راهنماییم کنید
مرسی
موفق باشید
منبع : ندارد ! یعنی این آموزش تنها برای این سایت نوشته شده است . با استفاده از آموزش های کتاب Sams asp.net 3.5 unleashed