日期:2010-01-26 浏览次数:20520 次
电子商务网站支付功能页面往往会有很多信息,对于这些信息的保存,往往是分步完成的,那么使用Ajax最合适不过了,比如其中的收货人信息模块。这些信息的新建和编辑保存都是用Ajax来完成的。那么有几种方式完成这个操作呢,我想到如下几种。
先来看看该功能的截图:

一般情况下这些信息会对应一个实体类,就命名为:ReceiverInfo,简单起见,我定义ReceiverInfo如下:

1、将需要的值拼接成json文本,再Action里面处理
首先您需要将要保存的值拼接成一个json文本,类似:
- var test = "{ ReceiverId: 5, ReceiverName: "will", Sex: "F", CreateDate: "2011-02-21" }";
 
然后用Jquery保存到数据库,代码如下:
- $.ajax({
 - url: "/Home/test1",
 - type: "post",
 - cache: false,
 - data: test});
 
然后您在Action里面这样操作:
- StreamReader reader = new StreamReader(Request.InputStream);
 - string bodyText = reader.ReadToEnd();
 - JavaScriptSerializer js = new JavaScriptSerializer();
 - ReceiverInfo receiver = js.Deserialize<ReceiverInfo>(bodyText);
 - //保存。。。
 
2、利用自定义的ModelBinder实现
JsonBinder
- public class JsonBinder<T> : IModelBinder
 - {
 - public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
 - {
 - StreamReader reader = new StreamReader(controllerContext.HttpContext.Request.InputStream);
 - string json = reader.ReadToEnd();
 - if (string.IsNullOrEmpty(json))
 - return json;
 - JavaScriptSerializer serializer = new JavaScriptSerializer();