在使用DataTables从服务端获取数据时,在非MVC的情况下没有MVC的自动绑定功能,所以需要自己写一个绑定,将Post过来的InputStream转为对应的类。

  HTML:

  

<form id="formSearch" runat="server" class="form-horizontal">
<div class="container-fluid">
<div class="form-group">
<asp:Label CssClass="col-sm-2 control-label" runat="server" Text="<%$ Resources:Resource,Form_Id1 %>"></asp:Label>
<div class="col-sm-4">
<input type="text" class="form-control" id="formID" name="formID" maxlength="64" />
</div> <asp:Label CssClass="col-sm-2 control-label" runat="server" Text="<%$ Resources:Resource,Process_Name1 %>"></asp:Label>
<div class="col-sm-4">
<select class="form-control" id="FlowID" name="FlowID">
</select>
</div>
</div>
<div class="form-group">
<asp:Label runat="server" CssClass="col-sm-2 control-label" Text="<%$ Resources:Resource,Apply_Person1 %>"></asp:Label>
<div class="col-sm-4">
<input type="text" id="applyPerson" name="applyPerson" class="form-control" maxlength="64" />
</div>
<div class="col-sm-2">
<button id="btnSearch" class="btn btn-primary">
<asp:Literal runat="server" Text="<%$ Resources:Resource,Search %>"></asp:Literal>
</button>
</div>
</div>
</div>
</form>

  JS:

function BindList() {
if (table == null) {
table = $list.DataTable({
ajax:
{
url: "/PageHandle/TaskHandler.ashx?type=MyTask",
contentType: "application/json; charset=utf-8",
dataType: "json",
data: function (d) {
return JSON.stringify($.extend({}, d, $.getJsonFromForm($("#formSearch"))));
}
},
columns: [
{
XXXXXXXXX
],
});
}
}

  TaskRQ:

  

public class TaskRQ : BaseDataTablesRequest
{
//public bool isTempNameZh_cn { get; set; } public string currentUser { get; set; }
public string urgentCase { get; set; }
public string FlowID { get; set; }
public string taskStatus { get; set; }
public string formID { get; set; }
public string activityName { get; set; }
public string applyPerson { get; set; }
public bool isChina { get; set; }
public DateTime? applyDateFrom { get; set; }
public DateTime? applyDateTo { get; set; }
//public DateTime? assignDateFrom
//{
// get; set;
//}
//public DateTime? assignDateTo { get; set; }
//public string orderBy { get; set; }
}

  注意:被转换的对象的字段名必须与Html中的Name字段一致,否则将忽略该对象的赋值。

使用JavaScriptSerializer来将InputStream转为TaskRQ对象。

public void ProcessRequest(HttpContext context)
{
var rq = GetTaskRQ(context);
var taskS = new WFTaskS();
object rp ;
var type = context.Request["type"];
switch (type)
{
case "MyTask":
rp = taskS.GetMyTask(rq);
break;
case "MyChildTask":
rp = taskS.GetMyChildTask(rq);
break;
case "MyDelegatedTask":
rp = taskS.GetDelegatedTask(rq);
break;
case "AllTask":
rp = taskS.GetAllTask(rq);
break;
default:
rp = taskS.GetMyTask(rq);
break;
}
var js = new JavaScriptSerializer();
var result = js.Serialize(rp);
context.Response.ContentType = "application/json; charset=utf-8";
context.Response.Write(result);
} public bool IsReusable
{
get
{
return false;
}
} /// <summary>
/// 获得Post来的InputStream,将其转化为Json,并将Json反序列化为对象
/// </summary>
/// <param name="context"></param>
/// <returns></returns>
private TaskRQ GetTaskRQ(HttpContext context)
{
var stream = context.Request.InputStream;
if (stream.Length == )
{
return null;
}
var reader = new StreamReader(stream);
var json = reader.ReadToEnd();
var js = new JavaScriptSerializer();
var rq = js.Deserialize<TaskRQ>(json);
var IsChina = false;
if (HttpContext.Current.Session != null
&& HttpContext.Current.Session["_Localization"] != null
&& HttpContext.Current.Session["_Localization"].ToString().ToLower() == "zh-cn")
{
IsChina = true;
}
rq.isChina = IsChina;
return rq;
}

还有其他的一些方式,可以参见http://blog.csdn.net/testcs_dn/article/details/78150046?locationNum=6&fps=1

将AJAX Post的Data转为对应的Class的更多相关文章

  1. JavaScript中创建类,赋值给ajax中的data参数

    缘由:因为要给根据是否选中checkbox来动态增加ajax中data的属性(ajax的data属性格式的几种方法,参考http://www.jb51.net/article/46676.htm) d ...

  2. ajax传参data里面的键是一个变量的解决方法

    直接用这种方式来传参,比如bean中有字段 username password,则是 data[username] = "用户名"; data[password] = " ...

  3. ajax请求的data数据格式

    ajax提交data类型 一.问题来源 今天使用ajax时,发现get传data时,传递json字符串时传不过去参数,所以做了一些实验测试ajax的get和post的传递data时的不同. 二.概念 ...

  4. Controller怎么接收Ajax传来的data

    var json = { "VendorId": strVendorId, "VendorName": strVendorName, "Remark& ...

  5. ajax就收data的参数

    一,变量 "data": ${cityData},//数据(必传) 二,json data:{"state":"Front"},

  6. jquery.form.js实现将form提交转为ajax方式提交的使用方法

    本文实例讲述了jquery.form.js实现将form提交转为ajax方式提交的方法.分享给大家供大家参考.具体分析如下: 这个框架集合form提交.验证.上传的功能. 这个框架必须和jquery完 ...

  7. jquery.form.js实现将form提交转为ajax方式提交的方法

    本文实例讲述了jquery.form.js实现将form提交转为ajax方式提交的方法.分享给大家供大家参考.具体分析如下: 这个框架集合form提交.验证.上传的功能. 这个框架必须和jquery完 ...

  8. Post data using ajax in laravel 5

    转自:http://www.tuicool.com/articles/2u2mmmu Post data using ajax in laravel 5 to controller If you ar ...

  9. 一些ajax代码

    $.ajax({ type : "get", url : "list_hot_ajax.json", data : {"provinceId" ...

随机推荐

  1. PowerDesigner 生成C#实体模版代码

    操作步骤见:  https://blog.csdn.net/da454122373/article/details/54346217 最后的template 模版代码如下: .if (%isValid ...

  2. NetCore入门篇:(七)Net Core项目使用Controller之二

    一.简介 1.说明Post,Get定义的区别. 2.说明如何路由定义. 二.Get.Post定义 1.api不定义访问方式时,同时支持get 和 post.如果定义某种方式,则仅支持某种方式.具体看代 ...

  3. BitAdminCore框架应用篇:(二)创建一个简单的增删改查模块

    NET Core应用框架之BitAdminCore框架应用篇系列 框架演示:http://bit.bitdao.cn 框架源码:https://github.com/chenyinxin/cookie ...

  4. ORM-Dapper快速学习

    轻量级ORM框架——第一篇:Dapper快速学习 转载地址:http://www.cnblogs.com/huangxincheng/p/5828470.html  我们都知道ORM全称叫做Objec ...

  5. JavaScript学习知识点归纳

    JavaScript学习包括几大方面: 1.基础语法 2.JavaScript核心对象 3.DOM操作 4.BOM操作 5.正则表达式 6.AJAX 7.面向对象编程 以下依次为各版块相关内容==&g ...

  6. 2.jquery在js中写标准的ajax请求

    $(function(){ $.ajax({ url:"http://www.microsoft.com", //请求的url地址 dataType:"json" ...

  7. ZZNU 2055(基姆拉尔森计算公式)

    题目链接 题意: 比如今天是2017年8月16日,星期三.下一个也是星期三的8月16日发生在2023年. 现在是日期是yyyy-mm-dd,我们希望你求出薛定谔会跳跃到那一年. 题解: emmmm.. ...

  8. Using Time Profiler in Instruments

    要用 release 版本来profile 概述 time profile 是使用采样的方法来统计,而不是记录每一个方法调用的起始和结束,采样间隔是 1 ms.  在上图中,main 函数被采样了 ...

  9. leetcode-64-最小路径和

    题目描述: 给定一个包含非负整数的 m x n 网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小. 说明:每次只能向下或者向右移动一步. 示例: 输入: [  [1,3,1], [1 ...

  10. 【BZOJ2300】【HAOI2011】防线修建

    题目大意:给你m+3个点,有q个操作,每次要么询问当前点集构所构成的上凸壳总长度,要么在当前点集中删除一个点. 这题是吼题啊!!! 刚开始想着如何正常地做,考虑过用线段树维护一个区间内的凸包,发现并不 ...