在使用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. Tomcat监听443端口的方法

    当我们需要更安全的访问网站的时候就会选择使用https协议,而https协议默认的端口号为443端口,这就是我们为什么向让Tomcat监听在443端口的原因,因为监控在非80端口和443端口的web服 ...

  2. Linux应用监控工具

    Linux下的监控工具丰富繁杂,如果只知道top.free之类的就太少了,而且也不能胜任日常的Linux管理工作,尤其是在排除Web服务器问题时. 本文给出5个Linux下功能更为强大的监控工具,有了 ...

  3. Linux C++ - IP地址转换函数

    1. 函数用途:数字网络序本地序转换 适用类型:IP地址uint32_t类型.端口号uint16_t类型 #include<netinet/in.h> extern uint32_t nt ...

  4. oauth入门

    oauth可以支持跨网站的数据传输.假设一个用户把照片上传到faji网站,然后想登录到beppa网站(照片打印),把faji的上照片打印出来. 她当然可以自己把照片取下来再上传上去,不过比较麻烦. 使 ...

  5. ABP框架中微服务跨域调用其它服务接口

    AjaxResponse为ABP自动包装的JSON格式 /// <summary> /// 通过地址和参数取得返回OutPut数据 /// </summary> /// < ...

  6. C#将网页数据导出Excel时编码设置

    public void DGToExcel() { Response.ClearContent(); Response.Charset = "GB2312";//内容编码 Resp ...

  7. 如何在Qt资源文件中包含和释放exe等各种类型文件?

    操作系统:Windows 10 X64 企业版 Qt: 5.8.0 QtCreater: 4.2.1 刚刚开始学习Qt,不断遇到困难和挑战,前几天在各个QQ群里询问如何在Qt的资源文件中包含和释放ex ...

  8. django url 路由设置技巧

    Django的url使用方法 利用Django开发站点.能够设计出很优美的url规则,假设url的匹配规则(包括正則表達式)组织得比較好,view的结构就会比較清晰.比較easy维护. 最简单的形式 ...

  9. Python面向对象(类的成员之方法)

    day24 类的成员之方法 - 普通方法,保存在类中,由对象来调用,self > 对象 - 静态方法,保存在类中,由类直接调用 - 类方法,保存在类中,由类直接调用,cls > 当前类 c ...

  10. angular.js的依赖注入解析

    本教程使用AngularJS版本:1.5.3        angularjs GitHub: https://github.com/angular/angular.js/        Angula ...