日期:2010-01-26 浏览次数:20450 次
电子商务网站支付功能页面往往会有很多信息,对于这些信息的保存,往往是分步完成的,那么使用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();