本文向大家介绍XTemplate + WCF,可能好多人还不了解XTemplate + WCF,没有关系,看完本文你肯定有不少收获,希望本文能教会你XTemplate + WCF相关东西。
1.服务端返回时,必须按以下格式返回:
stcCallback1001({...})其中stcCallback1001中的1001是自动生成的,如果是分页提交的话,每再请求一次1001会变成1002,1003...类推#t#
2.ExtJs官方的示例中虽然ScriptTagProxy的例子并不少,但是就是没有XTemplate+ScriptTagProxy跨域读取的单一功能示例,下面给一个XTemplate + WCF跨域读取数据的示例服务端WCF的处理。
这里与上一篇http://www.cnblogs.com/yjmyzz/archive/2008/09/10/1288399.html (ExtJs学习笔记(22)-XTemplate + WCF 打造无刷新数据分页)相比,多了一个参数callBack,同时返回类型改为Stream,返回方法的处理参考了老张的http://www.cnblogs.com/jillzhang/archive/2008/07/17/1245458.html(再说ExtJs与WCF之间的跨域访问)一文这里要注意的是:
尝试了多次,发现XTemplate不支持多层节点的绑定,即服务端返回的值类似:
- public class User
- {
- [DataMember]
- public string Name { get; set; }
- [DataMember]
- public int Age { get; set; }
- }
- [ServiceContract]
- public interface IMyService
- {
- [OperationContract]
- [WebInvoke(UriTemplate = "User/{name}/{age}", Method = "POST",
- ResponseFormat = WebMessageFormat.Json)]
- User CreateUser(string name, string age);
虽然也是标准的JSON字符串,但是数据节点是多层次的,XTemplate + WCF无法直接读取。所以只能在客户端用JS的正则表达式处理,手动重新组织成XTemplate + WCF所需的JSON对象,最终转换成:
- public User CreateUser(string name, string age)
- {
- return new User { Name = name, Age = int.Parse(age) };
- }
- public string UpdateUser(string name)
- {
- return "UPDATE...";
- }
- }