开始之前先定义个泛型类和数据对象类型
Code
[DataContract]
public class Product
{
[DataMember]
public int ProductID;
[DataMember]
public string Name;
[DataMember]
public string ProductNumber;
}
[DataContract]
public class PageData<T>
{
[DataMember]
public int TotolRecord
{
get;
set;
}
[DataMember]
public T Data
{
get;
set;
}
}
方法一:
参考:
http://www.cnblogs.com/iamv/archive/2008/10/31/1323821.html
http://www.cnblogs.com/jillzhang/archive/2008/06/13/1219201.html
新建Ajax-enabled WCF Service
名字为ProductService.svc
WCF代码
Code
using System;
using System.IO;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.ServiceModel.Activation;
using System.Data.SqlClient;
using System.Runtime.Serialization.Json;
using System.ServiceModel.Web;
namespace Josn_WCF
{
[ServiceContract(Namespace = "")]
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class ProductService
{
[OperationContract]
public string GetProductDetailsByProductID(int productID)
{
//随便定义一个返回的对象
Product prod = new Product();
int i = productID;
prod.ProductID = i;
prod.Name = i.ToString() + "_V";
prod.ProductNumber = i.ToString() + "007";
MemoryStream stream = new MemoryStream();
DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(Product));
serializer.WriteObject(stream, prod);
stream.Position = 0;
StreamReader streamReader = new StreamReader(stream);
return streamReader.ReadToEnd();
}
}
}
UI调用WCF代码
新建一个aspx页面
Code
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="JSON_WCF.aspx.cs" Inherits="Josn_WCF.JSON_WCF" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
<title>Invoking the Product Service through the AJAX based Client</title>
<script type="text/javascript">
function pageLoad() {
}
function OnGetClick() {
ProductService.GetProductDetailsByProductID($get("txtProductID").value,OnGetComplete, OnError);
}
function OnGetComplete(result){
var prod = eval("(" + result + ")");
$get("spnProductID").innerText = prod.ProductID;
$get("spnProductName").innerText = prod.Name;
$get("spnProductNumber").innerText = prod.ProductNumber;
}
function OnError(errorMessage) {
alert(errorMessage.get_message());
}
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
Enter Product ID:
<input type="text" id="txtProductID" name="txtProductID" />
<input type="button" value="Get Product Details" id="btnInvokeWebService" onclick="OnGetClick()" />
<asp:ScriptManager ID="ScriptManager1" runat="server">
<Services>
<asp:ServiceReference Path="~/ProductService.svc" />
</Services>
</asp:ScriptManager>
<br />
<br />
Product ID : <span id="spnProductID"></span>
<br />
<br />
Name :<span id="spnProductName"></span>
<br />
<br />
Product Number :<span id="spnProductNumber"></span>
<br />
<br />
</div>
</form>
</body>
</html>
主要是注意其中的JavaScript代码和ScriptManager
<asp:ScriptManager ID="ScriptManager1" runat="server">
<Services>
<asp:ServiceReference Path="~/ProductService.svc" />
</Services>
</asp:ScriptManager>