توضیحات و دانلود

استفاده از وب سرویس WCF برای پیاده سازی AJAX AutoCompleteExtender با ASP.Net
0 0
استفاده از وب سرویس WCF برای پیاده سازی AJAX AutoCompleteExtender با ASP.Net

با سلام در این مقاله استفاده ازکنترل جعبه ابزار AJAX AutoCompleteExtender   را با استفاده از وب سرویس WCF (Windows Control Foundation) در ASP.Net را توضیح خواهیم داد.
بانک اطلاعاتی
برای پایگاه داده از پایگاه Northwind استفاده می کنیم. شما می توانید آن را با استفاده از لینک زیر دانلود کنید
دانلود Northwind پایگاه داده
 
رشته اتصال
در زیر رشته اتصال به پایگاه داده ای که در web.config گذاشته ایم است.

<connectionStrings>
<add name="constr" connectionString="Data Source = .\SQL2005;
Initial Catalog = Northwind; Integrated Security = true"/>
</connectionStrings>

اضافه کردن و پیکربندی سرویس WCF
ما باید برخی از تغییرات پیکربندی را برای سرویس WCF انجام دهیم تا آن را به  AJAX Control Toolkit AutoCompleteExtender در دسترس قرار دهیم.
1. اضافه کردن Attribute AspNetCompatibilityRequirements
ویژگی سرویس AspNetCompatibilityRequirements را برای کلاس سرویس اضافه کنید تا خدمات WCF مانند ASMX Web Service رفتار کنند و قادر به پردازش درخواست ها از طریق HTTP به روش زیر باشند
C #

[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class Service : IService
{
}

VB.Net

<ServiceContract()> _
<AspNetCompatibilityRequirements(RequirementsMode:=AspNetCompatibilityRequirementsMode.Allowed)> _
Public Class Service
 
End Class

2. اضافه کردن نقطه پایانی رفتار AJAX
رفتار پایانی ASP.NET AJAX را در فایل Web.Config اضافه کنید تا ارتباط AJAX به سرویس از  AJAX Control Toolkit AutoCompleteExtender فعال کنید .
C #

<system.serviceModel>
      <behaviors>
            <serviceBehaviors>
                  <behaviorname="ServiceBehavior">
                        <serviceMetadatahttpGetEnabled="true"/>
                        <serviceDebugincludeExceptionDetailInFaults="true"/>
                  </behavior>
            </serviceBehaviors>
        <endpointBehaviors>
            <behaviorname="ServiceAspNetAjaxBehavior">
                <enableWebScript />
            </behavior>
        </endpointBehaviors>
      </behaviors>
    <serviceHostingEnvironmentaspNetCompatibilityEnabled="true"/>
    <services>
            <servicebehaviorConfiguration="ServiceBehavior"name="Service">
                  <endpointaddress=""binding="webHttpBinding"contract="IService"behaviorConfiguration="ServiceAspNetAjaxBehavior">
                        <identity>
                              <dnsvalue="localhost"/>
                        </identity>
                  </endpoint>
                  <endpointaddress="mex"binding="mexHttpBinding"contract="IMetadataExchange"/>
            </service>
      </services>
</system.serviceModel>

VB.Net

<system.serviceModel>
      <behaviors>
        <serviceBehaviors>
                  <behaviorname="ServiceBehavior">
                        <serviceMetadatahttpGetEnabled="true"/>
                        <serviceDebugincludeExceptionDetailInFaults="true"/>
                  </behavior>
            </serviceBehaviors>
            <endpointBehaviors>
                  <behaviorname="ServiceAspNetAjaxBehavior">
                        <enableWebScript/>
                  </behavior>
            </endpointBehaviors>
      </behaviors>
      <serviceHostingEnvironmentaspNetCompatibilityEnabled="true"/>
      <services>
            <servicename="Service"behaviorConfiguration="ServiceBehavior">
            <endpointaddress=""binding="webHttpBinding"contract="Service"behaviorConfiguration="ServiceAspNetAjaxBehavior">
                <identity>
                    <dnsvalue="localhost"/>
                </identity>
            </endpoint>
            <endpointcontract="IMetadataExchange"binding="mexHttpBinding"address="mex" />
        </service>
      </services>
</system.serviceModel>

3. اضافه کردن ویژگی WebInvoke
ویژگی WebInvoke را برای مشخص کردن روش و ResponseFormat به صورت زیر اضافه کنید .
C #

[OperationContract]
[System.ServiceModel.Web.WebInvoke(Method = "POST",
    ResponseFormat = System.ServiceModel.Web.WebMessageFormat.Json)]
string GetCustomers(string prefix);

VB.Net

<System.ServiceModel.Web.WebInvoke(Method:="POST", _
        ResponseFormat:=System.ServiceModel.Web.WebMessageFormat.Json)> _
Public Function GetCustomers(ByVal prefix As String) As String

این همه چیزی است که ما باید برای پیکربندی وب سرویس انجام دهیم .
 
ساخت روش خدمات WCF
حالا ما روش WCF Service را که AJAX AutoCompleteExtender برای دریافت داده ها از سرور فراخوانی می کند، میسازیم . اساسا یک تابع ساده است که جدول مشتریان پایگاه Northwind را جستجو می کند و سوابق مشتریان همسان را باز می گرداند.
C #

IService.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;
using System.ServiceModel.Web;
 
[ServiceContract]
public interface IService
{
    [OperationContract]
    [WebInvoke(Method = "POST", ResponseFormat = WebMessageFormat.Json)]
    List<string> GetCustomers(string prefixText, int count);
}

 Service.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.ServiceModel;
using System.Text;
using System.Data.SqlClient;
using System.Configuration;
using System.Web.Script.Serialization;
using System.ServiceModel.Activation;
 
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class Service : IService
{
    public List<string> GetCustomers(string prefixText, int count)
      {
        List<string> customers = new List<string>();
        using (SqlConnection conn = new SqlConnection())
        {
            conn.ConnectionString = ConfigurationManager.ConnectionStrings["constr"].ConnectionString;
            using (SqlCommand cmd = new SqlCommand())
            {
                cmd.CommandText = "select ContactName, CustomerId from Customers where " +
                "ContactName like @prefix + '%'";
                cmd.Parameters.AddWithValue("@prefix", prefixText);
                cmd.Connection = conn;
                conn.Open();
                using (SqlDataReader sdr = cmd.ExecuteReader())
                {
                    while (sdr.Read())
                    {
                        string item = AjaxControlToolkit.AutoCompleteExtender.CreateAutoCompleteItem(sdr["ContactName"].ToString(), sdr["CustomerId"].ToString());
                        customers.Add(item);
                    }
                }
                conn.Close();
            }
            return customers;
        }
    }
}

VB.Net

Service.vb

Imports System.Collections.Generic
Imports System.Linq
Imports System.Runtime.Serialization
Imports System.ServiceModel
Imports System.Text
Imports System.Data.SqlClient
Imports System.Configuration
Imports System.Web.Script.Serialization
Imports System.ServiceModel.Activation
Imports System.ServiceModel.Web
Imports System.Web.Script.Services
 
<ServiceContract()> _
<AspNetCompatibilityRequirements(RequirementsMode:=AspNetCompatibilityRequirementsMode.Allowed)> _
Public Class Service
    <OperationContract()> _
    <WebInvoke(Method:="POST", ResponseFormat:=WebMessageFormat.Json)> _
    Public Function GetCustomers(ByVal prefixText As String, ByVal count As Integer) As List(Of String)
        Dim customers As New List(Of String)()
        Using conn As New SqlConnection()
            conn.ConnectionString = ConfigurationManager.ConnectionStrings("constr").ConnectionString
            Using cmd As New SqlCommand()
                cmd.CommandText = "select ContactName, CustomerId from Customers where " & _
                    "ContactName like @prefix + '%'"
                cmd.Parameters.AddWithValue("@prefix", prefixText)
                cmd.Connection = conn
                conn.Open()
                Using sdr As SqlDataReader = cmd.ExecuteReader()
                    While sdr.Read()
                        Dim item As String = AjaxControlToolkit.AutoCompleteExtender.CreateAutoCompleteItem(sdr("ContactName").ToString, sdr("CustomerId").ToString)
                        customers.Add(item)
                    End While
                End Using
                conn.Close()
            End Using
            Return customers
        End Using
    End Function
End Class

توضیح:

در بالا قبول پارامتر prefixText و شمارش از طرف مشتری توسط کنترل جعبه ابزار AJAX  AutoCompleteExtender منتقل می شود. پارامتر prefixText برای جستجوی مشتریان در جدول مشتریان Northwind Database استفاده می شود.
نتایج بازگشت به کنترل جعبه ابزار AJAX AutoKitteItem  تبدیل شده و سپس به یک لیست عمومی از رشته اضافه می شود.
پیکربندی جانبی مشتری
ثبت نام کتابخانه AjaxControlToolkit
برای ثبت نام کتابخانه AjaxControlToolkit خط زیر باید به صفحه اضافه شود

<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="cc1" %>

علامت گذاری به عنوان HTML
در زیر علامت HTML از client صفحه وب با ScriptManager و AJAX AutoCompleteExtender است که به سرویس AJAX WCF دسترسی پیدا می کند که ما ایجاد کردیم.
Property ServicePath بر روی URL سرویس WCF تنظیم شده است و Property ServiceMethod به روش سرویس WCF GetCustomers تنظیم شده است.

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
  
</head>
<body>
    <form id="form1" runat="server">
        <asp:ScriptManager ID="ScriptManager1" runat="server"
        EnablePageMethods = "true">
        </asp:ScriptManager>
 
        <asp:TextBox ID="txtCustomers" runat="server"></asp:TextBox>
        <cc1:AutoCompleteExtender ServiceMethod="GetCustomers"
        MinimumPrefixLength="2" ServicePath = "~/Services/Service.svc"
        CompletionInterval="100" EnableCaching="false" CompletionSetCount="10"
        TargetControlID="txtCustomers"
        ID="AutoCompleteExtender1" runat="server" FirstRowSelected = "false">
        </cc1:AutoCompleteExtender>
    </form>
</body>
</html>

عکس روی صفحه

 

 


دانلود
  • لینک های دانلود دوره های آموزشی تا پایان دوره قابل دانلود می باشد.
  • برای خارج کردن فایل ها از حالت فشرده از ورژن جدید نرم افزار winrar استفاده کنید.
  • برای خارج کردن فایل ها از حالت فشرده لینک های دانلودی که چندین قسمت می باشند فقط قسمت اول را از حالت فشرده خارج کنید.
  • لطفا توضیحات نوشته شده برای مطالب را با دقت بخوانید.
  • برای نمایش فیلم ها می توانید از نرم افزار هایی مانند Km Player , VLC Player یا Media Player Classic استفاده کنید.

ارسال نظر
ارسال پیام به :