ساخت یک Whois دامنه Ajax بوسیله ClienSide-CallBack
اين مبحث خيلی وقت ميباشد که فعال است ولی هيچ آموزشی تا حالا در آن نوشته نشده حالا من يک مبحث را شروع ميکنم شايد دوستان حرفه ای ادامه دادن. اين آموزش کپی گرفته از سايت
http://www.how2learnasp.net ميباشد که اميدوارم به درد دوستان بخوره.
تجربه Ajax با Client-Side CallBack در Asp.NET 2
ورژن دوم Asp.net امکانی به نام Client-Side CallBack قرار داده که امکان پاس دادن مقادیر بین سرور و کلاینت را بدون Re Generate ( رفرش شدن ) صفحه فراهم کرده است .
این امر از لود شدن دوباره طرح گرافیکی و سایر عوامل صفحه که در حین رفرش شدن تغییری نمی کند جلوگیری می نماید و علاوه بر این که سرعت سایت را بسیار افزایش می دهد ، از خستگی کاربر نیز می کاهد.
برای اینکه بتوانید از این امکان جالب استفاده کنید باید با جاوا اسکریپت کمی آشنایی داشته باشید .
کار را با یک مثال شروع می کنم!
فرض کنید می خواهید یک Whois دامنه بسازید که کاربر می تواند دامنه مورد نظر را جستجو کرده و از ثبت شدن آن آگاهی پیدا کند .
در این مثال بدلیل افزایش سرعت Whois می خواهیم از Client-Callback استفاده کنیم ولی قبل از اینکه شروع به کار کنیم باید تکلیف انجام Whois را مشخص کنیم.
خوشبختانه بنده یک وب سرویس برای این کار نوشتم و لازم نیست شما کد نویسی انجام دهید ، کافیه مراحل زیر را طی کنید :
1- یک پروژه جدید به نام AjaxWhois بسازید
2- پنجره Solution Explorer را باز کرده و پس از کلیک راست گزینه Add Web Reference را انتخاب نمایید.
3- در بخش URL آدرس
http://faradade.com/webservices/whois.asmx را تایپ کرده و دکمه Go را بفشارید ( دقت کنید که برای استفاده از این سرویس حتما باید به اینترنت متصل باشید )
4- کار تمام است باتن Add Reference را بفشارید تا وب سرویس Whois به پروژه اضافه شود.
حال یک وارد صفحه Default.Aspx شده یک کنترل inputbutton از نوع Html به نام Btn_Whois و یک کنترل TextBox به نام Txt_Domain و یک کنترل Label به نام Lbl_Result به صفحه اضافه کنید.
وارد بخش Source Html شده و رویداد OnClick را برای Btn_Whois به صورت زیر بنویسید :
کد:
<input type="button" id="Btn_Whois" runat="server" value="جستجو" onclick="GetWhois()"/>
در نهایت کد های Html این بخش به صورت زیر خواهد بود :
کد:
<asp:TextBox ID="Txt_Domain" runat="server"></asp:TextBox>
<input type="button" id="Btn_Whois" runat="server" value="جستجو" onclick="GetWhois()"/><br />
<asp:Label ID="Lbl_Result" runat="server"></asp:Label>
وارد Code-Behind (قسمت کد نویسی) شده و سپس واسط کاربری (Interface) ICallbackEventHandler و متغیر محلی _callbackResult را به کلاس صفحه اضافه کنید :
کد:
public partial class _Default : System.Web.UI.Page, System.Web.UI.ICallbackEventHandler
{
private string _callbackResult = null;
protected void Page_Load(object sender, EventArgs e)
{
}
}
اکنون زیر روال های زیر را نیز اضافه نمایید :
کد:
public void RaiseCallbackEvent(string eventArg)
{
}
public string GetCallbackResult()
{
return "";
}
روال RaiseCallbackEvent وظیفه هندل کردن درخواست های ارسالی از صفحه را داشته و GetCallbackResult وظیفه ارسال مقادیر از سرور به صفحه کلاینت را دارد.
سپس کد های زیر را داخل زیر روال مربوط به لود شدن صفحه بنویسید :
کد:
string cbReference = Page.ClientScript.GetCallbackEventReference(this,
"arg", "GetWhoisFromServer", "context");
string cbScript = "function UseCallback(arg, context)" +
"{" + cbReference + ";" + "}";
Page.ClientScript.RegisterClientScriptBlock(this.GetType(),
"UseCallback", cbScript, true);
کد های فوق تابع جاوا اسکریپت مورد نیاز برای ارسال و دریافت درخواست های مبتنی بر CallBack را بر عهده دارد.
کد های زیر را داخل زیر روال RaiseCallbackEvent بنویسید :
کد:
using (com.faradade.whois MyWhois = new com.faradade.whois())
{
_callbackResult = MyWhois.simple(eventArg);
}
کد زیر از وب سرویسی که ابتدای پروژه به صفحه اضافه کردیم برای Whois دامنه استفاده کرده و مقدار بازگشتی تابع که از نوع Boolean است را داخل متغیر _callbackResult میریزد.
کد های زیر را هم داخل زیر روال GetCallbackResult بنویسید :
کد:
if (_callbackResult)
{
return "این دامنه آزاد می باشد";
}
else
{
return "این دامنه قبلا ثبت شده است";
}
این شرط مقدار _callbackResult را چک می کند در صورتی که True باشد به معنی آزاد بودن دامنه و در غیر این صورت به معنی ثبت شده بودن دامنه است.
خوب حالا وارد صفحه Default.aspx قسمت Html صفحه شده و کد های زیر را در بین تگ های <head></head> که تگ Head نام دارد بنویسید:
کد:
<script>
function GetWhois(){
document.getElementById('<%=Lbl_Result.ClientID %>').innerText = 'لطفا کمی صبر بفرمایید...';
UseCallback(document.getElementById('<%=Txt_Domain.ClientID %>').value);
}
function GetWhoisFromServer(RetVal, context){
document.getElementById('<%=Lbl_Result.ClientID %>').innerText = RetVal;
}
</script>
کد های زیر نیز کد های واضح جاوا اسکریپت هستند که برای کار با کنترل های داخل صفحه می باشد .
کار تمام است می توانید نتیجه را مشاهده کنید .
فایل پروژه را نیز ضمیمه کرده ام
لینک دانلود :
http://how2learnasp.net/Projects/AjaxWhois.rar