一种现代方法是将ASP.NET Web API 2(服务器端)与 jQuery Ajax(客户端)结合使用。
与页面方法和 ASMX Web 方法一样,Web API 允许您在 ASP.NET 中编写 C# 代码,这些代码可以从浏览器或任何地方调用,真的!
这是一个示例 Web API 控制器,它公开了 API 方法,允许客户端检索有关 1 个或所有产品的详细信息(在现实世界中,产品可能会从数据库加载):
public class ProductsController : ApiController
{
Product[] products = new Product[]
{
new Product { Id = 1, Name = "Tomato Soup", Category = "Groceries", Price = 1 },
new Product { Id = 2, Name = "Yo-yo", Category = "Toys", Price = 3.75M },
new Product { Id = 3, Name = "Hammer", Category = "Hardware", Price = 16.99M }
};
[Route("api/products")]
[HttpGet]
public IEnumerable<Product> GetAllProducts()
{
return products;
}
[Route("api/product/{id}")]
[HttpGet]
public IHttpActionResult GetProduct(int id)
{
var product = products.FirstOrDefault((p) => p.Id == id);
if (product == null)
{
return NotFound();
}
return Ok(product);
}
}
控制器使用这个示例模型类:
public class Product
{
public int Id { get; set; }
public string Name { get; set; }
public string Category { get; set; }
public decimal Price { get; set; }
}
用于获取和迭代产品列表的示例 jQuery Ajax 调用:
$(document).ready(function () {
// Send an AJAX request
$.getJSON("/api/products")
.done(function (data) {
// On success, 'data' contains a list of products.
$.each(data, function (key, item) {
// Add a list item for the product.
$('<li>', { text: formatItem(item) }).appendTo($('#products'));
});
});
});
这不仅使您可以轻松地创建现代 Web API,如果您需要变得非常专业并记录它,您也可以使用ASP.NET Web API 帮助页面和/或Swashbuckle。
Web API 可以改装(添加)到现有的 ASP.NET Web 窗体项目。在这种情况下,您需要将路由指令添加到Application_Start
文件中的方法中Global.asax
:
RouteTable.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = System.Web.Http.RouteParameter.Optional }
);
文档