فراخوانی Generic Handler با استفاده از jQuery درASP.NET

سه شنبه 24 آذر 1394

در این مقاله می خواهیم توضیح دهیم که چگونه می توان Generic Handler را با استفاده از jQuery فراخوانی کرد و تعدادی داده به handler فرستاده و آنها را در Generic Handler دریافت کرد.

فراخوانی Generic Handler با استفاده از jQuery درASP.NET

قبل از شروع کار با Generic handler ابتدا باید اطلاعات بیشتری در مورد Generic handler داشته باشیم.

یک Generic handler چیست؟

حتما برای شما هم پیش آمده است که در حین ساخت وب سایت بخواهید صفحه را بصورت پویا بسازید، در این موارد نیازی به ساخت فرم وب نیست و بجای آن می توانید از Generic handler یا فایلهای ASHX استفاده کنید. هر کاری که باید انجام شود در یک فایل ashx نوشته می شود. با فراخوانی url فایل ashx کار مورد نظر انجام شده و محتوای مورد نیاز تولید می شود. این کار زمانی مفید است که مثلا می خواهیم عکسی را از یک query string، XML یا داده های دیگر برگردانیم.

ما از فایل ASHX در URL استفاده می کنیم که به صورت داینامیک داده برمی گرداند. همچنین ما از query string استفاده می کنیم.

مرحله 1: Visual Studio را باز می کنیم:

 

مرحله 2: یک وب سایت ایجاد می کنیم، بر روی فایل کلیک کرده و به New رفته و بر روی Website کلیک کنید.

 

مرحله 3: حالا بر روی وب سایت راست کلیک کرده و یک Web Form اضافه کنید و سپس نام مناسبی برای آن قرار دهید.

مرحله 4: بعد از اضافه کردن Web Form بر روی website  راست کلیک کرده و با add new item یک generic handler در website اضافه می کنیم.

 

 

مرحله 5: handler پیش فرض شامل کد زیر می باشد و فایل اضافی generic handler به صورت ashx. می باشد.

<% @WebHandler Language = "C#"  
Class = "Handler" %>  
  
using System;  
using System.Web;  
  
public class Handler: IHttpHandler {  
  
    public void ProcessRequest(HttpContext context) {  
        context.Response.ContentType = "text/plain";  
        context.Response.Write("Hello World");  
    }  
  
    public bool IsReusable {  
        get {  
            return false;  
        }  
    }  
  
}

مرحله 6: بعد از اضافه کردن handler در website، generic handler را با استفاده از jQuery فراخوانی می کنیم. برای فراخوانی generic handler باید یک تابع برای فراخوانی generic handler ایجاد کنیم.

function CallHandler() {  
    debugger;  
    var obj = {  
        'Email': $('#ContentPlaceHolder1_txtEmail').val(),  
        'pass': $('#ContentPlaceHolder1_txtPass').val(),  
        'User': $('#ContentPlaceHolder1_txtusername').val(),  
        'txtPhone': $('#ContentPlaceHolder1_txtPhone').val(),  
        'txtState': $('#ContentPlaceHolder1_txtState').val(),  
        'txtCity': $('#ContentPlaceHolder1_txtCity').val()  
    }  
    $.ajax({  
        url: "Registration.ashx",  
        contentType: "application/json; charset=utf-8",  
        dataType: "json",  
        data: obj,  
        responseType: "json",  
        success: OnComplete,  
        error: OnFail  
    });  
    return false;  
}  
  
function OnComplete(Registration) {  
    debugger;  
  
}  
  
function OnFail(result) {  
    alert('Request Failed');  
} 

حالا باید یک متد jQuery روی رویداد کلیک لینک بنویسیم.

<asp:Button ID="AS" runat="server" Text="Submit" CssClass="mainBtn" OnClientClick="CallHandler();" /> 

مرحله 7: حالا کد را برای گرفتن مقدر از Web Form در generic handler می نویسیم.

using System;  
using System.Collections.Generic;  
using System.Linq;  
using System.Web;  
using McnTracker.Models;  
using System.Data;  
using System.Data.SqlClient;  
using System.Web.Script.Serialization;  
using System.IO;  
using System.Web;  
  
namespace McnTrackerWeb {  
    /// <summary>  
    /// Summary description for Registration1  
    /// </summary>  
    public class Registration1: IHttpHandler {  
  
        public void ProcessRequest(HttpContext context) {  
            McnTracker.Models.Registration rs = new McnTracker.Models.Registration();  
            rs.UserName = context.Request.QueryString["User"].ToString();  
            rs.Email = context.Request.QueryString["Email"].ToString();  
            rs.pass = context.Request.QueryString["pass"].ToString();  
            rs.Phone = Convert.ToInt64(context.Request.QueryString["Phone"].ToString());  
            rs.States = context.Request.QueryString["States"].ToString();  
            context.Response.ContentType = "text/plain";  
        }  
  
        public bool IsReusable {  
            get {  
                return false;  
            }  
        }  
  
    }  
} 

مرحله 8: بعد از نوشتن کد در generic handler وب سایت را اجرا کرده و بررسی می کنیم که آیا داده به handler پست شده یا خیر؟

 

جزییات را در webform نوشته و بر روی دکمه ثبت کلیک کنید.

حالا از break point برای کنترل مقدار در generic handler استفاده می شود.

 

با کلیک کردن بر روی column، مقدار را در generic handler مشاهده می کنید.

 

فایل های ضمیمه

برنامه نویسان

نویسنده 3355 مقاله در برنامه نویسان

کاربرانی که از نویسنده این مقاله تشکر کرده اند

در صورتی که در رابطه با این مقاله سوالی دارید، در تاپیک های انجمن مطرح کنید