


 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Web;
 5  
 6 namespace APIApplication.Models
 7 {
 8     public class Employees
 9     {
10         public int? Id { get; set; }
11         public int? DepartmentId { get; set; }
12         public string Name { get; set; }
13         public string Job { get; set; }
14         public string Gender { get; set; }
15         public string PhoneNum { get; set; }
16         public string EmailAdderss { get; set; }
17         public string Address { get; set; }
18     }
19 }

1 static List< Employees> emps;
2         static EmployeesController()
3         {
4             emps = new List< Employees>();
5             emps.Add( new Employees { Id = 1, DepartmentId = 1, Name = "张三", Gender = "男" , Job = "ASP.NET工程师" , PhoneNum = "1886                       0922483", EmailAdderss = "zhangsan@123.com" , Address = "江苏省苏州市独墅湖大道228号" });
6             emps.Add( new Employees { Id = 2, DepartmentId = 2, Name = "李四", Gender = "女" , Job = "web前端工程师" , PhoneNum = "1886                       0922483", EmailAdderss = "lisi@123.com" , Address = "江苏省苏州市独墅湖大道228号" });
7         }
 1 public IEnumerable <Employees > Get(int ? id = null )
 2         {
 3             return from employee in emps where employee.Id.Equals(id) || string.IsNullOrEmpty(Convert .ToString(id)) select employee;
 4         }
 5         public void Post( Employees employee)
 6         {
 7             employee.Id = 3;
 8             emps.Add(employee);
 9         }
10         public void Put( Employees employee)
11         {
12             emps.Remove(emps.Where(e => e.Id == employee.Id).First());
13             emps.Add(employee);
14         }
15         public void Delete( int id)
16         {
17             emps.Remove(emps.Where(e => e.Id == id).FirstOrDefault());
18         }


 1 <script>
 2     $(document).ready( function () {
 3         $.ajax({
 4             type: ‘GET‘,
 5             url: ‘http://localhost:7974/api/employees/get‘,
 6             dataType: ‘JSON‘,
 7             success: function (data) {
 8                 alert( "姓名:" + data[0].Name + " 性别:" + data[0].Gender + " 住址:" + data[0].Address);
 9             }
10         });
11     })



 1 using System.Web;
 2 using System.Web.Http.Filters;
 3 using System.Web.Mvc;
 4 
 5 namespace APIApplication
 6 {
 7     public class CrossSiteAttribute : System.Web.Http.Filters.ActionFilterAttribute
 8     {
 9         private const string Origin = "Origin";
10         /// <summary>
11         /// Access-Control-Allow-Origin是HTML5中定义的一种服务器端返回Response header,用来解决资源(比如字体)的跨域权限问题。
12         /// </summary>
13         private const string AccessControlAllowOrigin = "Access-Control-Allow-Origin" ;
14         /// <summary>
15         ///  originHeaderdefault的值可以使 URL 或 *,如果是 URL 则只会允许来自该 URL 的请求,* 则允许任何域的请求
16         /// </summary>
17         private const string originHeaderdefault = "http://192.168.13.7:8002" ;
18         /// <summary>
19         /// 该方法允许api支持跨域调用
20         /// </summary>
21         /// <param name="actionExecutedContext"> 初始化 System.Web.Http.Filters.HttpActionExecutedContext 类的新实例。</param>
22         public override void OnActionExecuted( HttpActionExecutedContext actionExecutedContext)
23         {
24             actionExecutedContext.Response.Headers.Add(AccessControlAllowOrigin, originHeaderdefault);
25         }
26     }
27 }
1 [CrossSite]
2  public IEnumerable<Employees > Get(int ? id = null )
3  {
4    return from employee in emps where employee.Id.Equals(id) || string.IsNullOrEmpty(Convert .ToString(id)) select employee;
5  }
 1 public class v_employees
 2     {
 3         public int? id { get; set; }
 4         public int? departmentid { get; set; }
 5         public string name { get; set; }
 6         public string job { get; set; }
 7         public string gender { get; set; }
 8         public string phonenum { get; set; }
 9         public string emailadderss { get; set; }
10         public string address { get; set; }
11     }
 1         private HttpClient client = new HttpClient ();
 2         private string url = "http://192.168.13.7:8001/api/employees/get" ;
 3 
 4         public async Task< ActionResult> Index()
 5         {
 6             ViewBag.Message = "Modify this template to jump-start your ASP.NET MVC application.";
 7 
 8             var data = await client.GetAsync(url);
 9             var employees = data.Content.ReadAsAsync<IEnumerable <v_employees >>();
10             List< v_employees> emps = employees.Result.ToList();           
11             ViewData[ "employees"] = emps;
12             return View();
13         }
然后在Index页面设置ViewData

在页面里就可以直接使用数据emps了
1 @foreach ( var item in emps)
2 {
3     <ul >
4         <li >@ item.name</ li>
5         <li >@ item.gender</li >
6         <li >@ item.address</li >
7     </ul >
8 }
运行后的效果如下:




 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Web;
 5  
 6 namespace APIApplication.Models
 7 {
 8     public class Employees
 9     {
10         public int? Id { get; set; }
11         public int? DepartmentId { get; set; }
12         public string Name { get; set; }
13         public string Job { get; set; }
14         public string Gender { get; set; }
15         public string PhoneNum { get; set; }
16         public string EmailAdderss { get; set; }
17         public string Address { get; set; }
18     }
19 }

1 static List< Employees> emps;
2         static EmployeesController()
3         {
4             emps = new List< Employees>();
5             emps.Add( new Employees { Id = 1, DepartmentId = 1, Name = "张三", Gender = "男" , Job = "ASP.NET工程师" , PhoneNum = "1886                       0922483", EmailAdderss = "zhangsan@123.com" , Address = "江苏省苏州市独墅湖大道228号" });
6             emps.Add( new Employees { Id = 2, DepartmentId = 2, Name = "李四", Gender = "女" , Job = "web前端工程师" , PhoneNum = "1886                       0922483", EmailAdderss = "lisi@123.com" , Address = "江苏省苏州市独墅湖大道228号" });
7         }
 1 public IEnumerable <Employees > Get(int ? id = null )
 2         {
 3             return from employee in emps where employee.Id.Equals(id) || string.IsNullOrEmpty(Convert .ToString(id)) select employee;
 4         }
 5         public void Post( Employees employee)
 6         {
 7             employee.Id = 3;
 8             emps.Add(employee);
 9         }
10         public void Put( Employees employee)
11         {
12             emps.Remove(emps.Where(e => e.Id == employee.Id).First());
13             emps.Add(employee);
14         }
15         public void Delete( int id)
16         {
17             emps.Remove(emps.Where(e => e.Id == id).FirstOrDefault());
18         }


 1 <script>
 2     $(document).ready( function () {
 3         $.ajax({
 4             type: ‘GET‘,
 5             url: ‘http://localhost:7974/api/employees/get‘,
 6             dataType: ‘JSON‘,
 7             success: function (data) {
 8                 alert( "姓名:" + data[0].Name + " 性别:" + data[0].Gender + " 住址:" + data[0].Address);
 9             }
10         });
11     })



 1 using System.Web;
 2 using System.Web.Http.Filters;
 3 using System.Web.Mvc;
 4 
 5 namespace APIApplication
 6 {
 7     public class CrossSiteAttribute : System.Web.Http.Filters.ActionFilterAttribute
 8     {
 9         private const string Origin = "Origin";
10         /// <summary>
11         /// Access-Control-Allow-Origin是HTML5中定义的一种服务器端返回Response header,用来解决资源(比如字体)的跨域权限问题。
12         /// </summary>
13         private const string AccessControlAllowOrigin = "Access-Control-Allow-Origin" ;
14         /// <summary>
15         ///  originHeaderdefault的值可以使 URL 或 *,如果是 URL 则只会允许来自该 URL 的请求,* 则允许任何域的请求
16         /// </summary>
17         private const string originHeaderdefault = "http://192.168.13.7:8002" ;
18         /// <summary>
19         /// 该方法允许api支持跨域调用
20         /// </summary>
21         /// <param name="actionExecutedContext"> 初始化 System.Web.Http.Filters.HttpActionExecutedContext 类的新实例。</param>
22         public override void OnActionExecuted( HttpActionExecutedContext actionExecutedContext)
23         {
24             actionExecutedContext.Response.Headers.Add(AccessControlAllowOrigin, originHeaderdefault);
25         }
26     }
27 }
1 [CrossSite]
2  public IEnumerable<Employees > Get(int ? id = null )
3  {
4    return from employee in emps where employee.Id.Equals(id) || string.IsNullOrEmpty(Convert .ToString(id)) select employee;
5  }
 1 public class v_employees
 2     {
 3         public int? id { get; set; }
 4         public int? departmentid { get; set; }
 5         public string name { get; set; }
 6         public string job { get; set; }
 7         public string gender { get; set; }
 8         public string phonenum { get; set; }
 9         public string emailadderss { get; set; }
10         public string address { get; set; }
11     }
 1         private HttpClient client = new HttpClient ();
 2         private string url = "http://192.168.13.7:8001/api/employees/get" ;
 3 
 4         public async Task< ActionResult> Index()
 5         {
 6             ViewBag.Message = "Modify this template to jump-start your ASP.NET MVC application.";
 7 
 8             var data = await client.GetAsync(url);
 9             var employees = data.Content.ReadAsAsync<IEnumerable <v_employees >>();
10             List< v_employees> emps = employees.Result.ToList();           
11             ViewData[ "employees"] = emps;
12             return View();
13         }
然后在Index页面设置ViewData

在页面里就可以直接使用数据emps了
1 @foreach ( var item in emps)
2 {
3     <ul >
4         <li >@ item.name</ li>
5         <li >@ item.gender</li >
6         <li >@ item.address</li >
7     </ul >
8 }
运行后的效果如下:

未完待续。
本教程会持续更新。
原文:http://www.cnblogs.com/lxhbky/p/6344787.html