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.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
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.
1 2 3 4 5 |
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.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
[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.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
[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.
1 2 3 4 5 |
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.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
<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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
<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/
[…] aşağıdaki şekilde değiştirin. Daha önceki yazılarda asp.net servis ile angularjs bağlantısı hakkında yazı yazmıştım. Bu kavram üzerinden anlatıma devam […]
[…] Konu:19: AngularJS ASP.NET Servise Bağlanma […]