Introduction
In this article, we will define how to use the Web API with ASP. Net Web Forms. The following is the procedure for using the Web API in Web Forms.
Step 1
First create the Web Form Project as in the following:
- Open Visual Studio 2012
- Click on "File" -> "New" -> "Project...".
- From the New Project window select "ASP.NET Web Forms Application".
- Change the name of application to "webapp".
- Click on the "OK" button.
Step 2
Then add the Model Class as in the following:
- Right-click on the solution in the Solution Explorer then select "Add" > "class"
- Set the name of the class to "Material".
- Click on the "OK" button.
Now we write this code for the class:
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Web;
- namespace webapp
- {
- public class Material
- {
- public int id { get; set; }
- public string Mname { get; set; }
- public decimal cost { get; set; }
- public string Type { get; set; }
- }
-
- }
Step 3
Then add the controller as in the following:
- Right-click on the solution in the Solution Explorer then select "Add" > "New item"
- In the Installed Templates window select "Visual C#" > "Web"
- Select the Web API Controller Class.
- Change the name of the controller to "Materials".
- Click on the "OK" button.
Write this code in the Controller:
- namespace webapp
- {
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Net;
- using System.Net.Http;
- using System.Web.Http;
- using webapp;
- public class MaterialsController : ApiController
- {
- Material[] materials = new Material[]
- {
- new Material{id= 1,Mname="KeyBoard",Type="Hardware",cost=700},
- new Material{id=2,Mname="Monitor",Type="Hardware",cost=21000},
- new Material{id=3 ,Mname="Orange",Type="Fruit",cost=100},
- };
- public IEnumerable<Material> GetAllMaterials()
- {
- return materials;
- }
- public Material GetMaterialById(int Id)
- {
- var material = materials.FirstOrDefault((m) => m.id == Id);
- if (material == null)
- {
- throw new HttpResponseException(HttpStatusCode.NotFound);
- }
- return material;
- }
- public IEnumerable<Material> GetMaterialBYType(string type)
- {
- return materials.Where((m) => string.Equals(m.Type, type,
- StringComparison.OrdinalIgnoreCase));
- }
- }
- }
Step 4: Add the Routing Information
In the Solution Explorer click on the "Global.asax" file and add this code in the file:
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Web;
- using System.Web.Optimization;
- using System.Web.Routing;
- using System.Web.Security;
- using webapp;
- using System.Web.Http;
- namespace webapp
- {
- public class Global : HttpApplication
- {
- void Application_Start(object sender, EventArgs e)
- {
- RouteTable.Routes.MapHttpRoute(
- name: "DefaultApi",
- routeTemplate: "api/{controller}/{Id}",
- defaults: new { Id = System.Web.Http.RouteParameter.Optional }
- );
-
- BundleConfig.RegisterBundles(BundleTable.Bundles);
- AuthConfig.RegisterOpenAuth();
- }
- void Application_End(object sender, EventArgs e)
- {
-
- }
- void Application_Error(object sender, EventArgs e)
- {
-
- }
- }
- }
Step 5: Add the client side AJAX
Now we need to create the Web API that can be accessed by the client. We will add the jQuery to this HTML page.
On the Default.aspx page we will add this code:
- <%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="webapp._Default" %>
- <asp:Content ID="HeaderContent1" runat="server" ContentPlaceHolderID="HeadContent">
- <script src="Scripts/jquery-1.7.1.min.js"></script>
- <script type="text/javascript">
- function getMaterials() {
- $.getJSON("api/materials",
- function (Data) {
- $('#materials').empty();
- $.each(Data, function (key, val) {
- var row = val.Mname + val.cost;
- $('<tr>', { text: row })
- .appendTo($('#materials'));
- });
- });
- }
- $(document).ready(getMaterials);
- </script>
- </asp:Content>
- <asp:Content runat="server" ID="BodyContent" ContentPlaceHolderID="MainContent">
- <h2>All Type Items</h2>
- <table>
- <thead>
- <tr><th>Name </th><th>cost</th></tr>
- </thead>
- <tbody id="materials">
- </tbody>
- </table>
- </asp:Content>
Now we add the reference of the jQuery file. We add this reference in the HeaderContent section in the Default.aspx page.
We can add this reference by draging from the Solution Explorer. In the Solution Explorer open the file "Scripts" and drag the jquery-1.7.1.min.js and place it in the HeaderContent section.
Result
When we debug this application the AJAX makes a request to the "api/materials" and then the response is a list of items.