Angularjs ve asmx servis kullanarak JSON formatında servisten okuma yapıp, kayıtları listeleyeceğiz.
1.Adım :Öncelikle bağlantı için asp.net projemizi oluşturduk.
2.Adım: Web Servis Dosyasını oluşturduk.
4
3.Adım : Kendi servis sınıfımızı kullanacağız. İsterseniz Visual Studio tarafından oluşturulan .cs dosyasını silebilirsiniz.
4.Adım :Kendi servis sınıfımızı ve personel sınıflarımız aşağıdaki şekilde oluşturuyoruz.
5.Adım: Personel sınıfını aşağıdaki gibi oluşturuyoruz.
public class Personel { public int Id { get; set; } public string Ad { get; set; } public string Soyad { get; set; } public Personel() { // // TODO: Add constructor logic here // } }
6.Adım: asmx dosyasını açıp kullanılacak olan servis dosyasını şekildeki gibi değiştiriyoruz.(Servis ismi için verdiğimiz sınıfın ve dosyanın adını yazın)
7.Adım: servis.cs dosyasını açıp using kısmını aşaşıdaki gibi kullanılacak olan kütüphaneleri yazın.
using System.Web.Services; using System.Web.Script.Services; using System.Web.Script.Serialization;
8.Adım: Servis sınıfına miras olarak System.Web.Services.WebService sınıfını belirtiyoruz.
9.Adım: Hazırladığımız web serviste veriyi XML ve JSON formatlarında almak için iki tane metod tanımlıyoruz.
GetPersonelXML()
GetPersonelJSON()
10.Adım: GetPersonelXML metodunun oluşturup [WebMetod] ajax ile çalışacağı bildirimini yapıyoruz.
[WebMethod] public Personel[] GetPersonelXML() { Personel[] personeller = new Personel[] { new Personel() { Id=1, Ad="Ali", Soyad="Ver" }, new Personel() { Id=2, Ad="Murat", Soyad="Dal" } }; return personeller; }
11.Adım: GetPersonelJSON içinde yine aynı attribute [WebMetod] bildirimini yapıyoruz. Bu metodda dikkat edilmesi gereken kısım metod geriye değer döndürmüyor ve JSON ifadesini metod içinde ekrana basıyoruz.
[WebMethod] [ScriptMethod(ResponseFormat = ResponseFormat.Json)] public void GetPersonelJSON() { Personel[] personeller = new Personel[] { new Personel() { Id=1, Ad="Ali", Soyad="Ver" }, new Personel() { Id=2, Ad="Murat", Soyad="Dal" } }; JavaScriptSerializer JSONCevir = new JavaScriptSerializer(); this.Context.Response.ContentType = "application/json; charset=utf-8"; this.Context.Response.Write(JSONCevir.Serialize(personeller)); }
ÖNEMLİ: Eğer return kullanarak yapmış olsaydık aşağıdaki gibi bir kod oluşacaktı. XML içinde JSON dosyasını angularjs içinde kullanmak çok zor olacaktı.
ÖNEMLİ: Aşağıdaki kod ile JSON formatına çevirip ekrana yazdırdığımızda ise elde edeceğimiz görüntü aşağıdaki gibi JSON formatında ve angularjs hiç bir değişiklik yapmadan kullanılacak formatta oldu.
JavaScriptSerializer JSONCevir = new JavaScriptSerializer(); this.Context.Response.ContentType = "application/json; charset=utf-8"; this.Context.Response.Write(JSONCevir.Serialize(personeller));
12Adım: Örnek uygulama için bir tane Web Form oluşturuyoruz.
13.Adım: AngularJS kodlarını oluşturduğumuz Web Forma yazıyoruz.
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script> <script> var app = angular .module("persModul", []) .controller("persController", function ($scope, $http) { var islem = $http({ method: "post", url: "WebService.asmx/GetPersonelJSON" }); islem.success(function (data) { console.log(data); $scope.personeller = data; }); }); </script>
14.Adım : Kayıtları ekran listelemek için ng-repeat oluşturma
<body ng-app="persModul"> <div ng-controller="persController"> <table border=1> <thead> <tr> <th>Id</th> <th>Ad</th> <th>Soyad</th> </tr> </thead> <tbody> <tr ng-repeat="personel in personeller"> <td> {{ personel.Id }} </td> <td> {{ personel.Ad }} </td> <td> {{ personel.Soyad }} </td> </tr> </tbody> </table> </div> </body>
Faydalanılan Kaynaklar
http://stackoverflow.com/questions/211348/how-to-let-an-asmx-file-output-json
http://stackoverflow.com/questions/19563641/how-to-get-json-response-from-a-3-5-asmx-web-service
http://www.c-sharpcorner.com/UploadFile/8ef97c/web-service-in-Asp-Net-part-4/
http://www.codeproject.com/Questions/775153/Asp-net-Web-service-return-json-format-data
http://www.c-sharpcorner.com/article/consuming-asp-net-web-service-in-angularjs-using-http/