将AJAX Post的Data转为对应的Class
在使用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的更多相关文章
- JavaScript中创建类,赋值给ajax中的data参数
缘由:因为要给根据是否选中checkbox来动态增加ajax中data的属性(ajax的data属性格式的几种方法,参考http://www.jb51.net/article/46676.htm) d ...
- ajax传参data里面的键是一个变量的解决方法
直接用这种方式来传参,比如bean中有字段 username password,则是 data[username] = "用户名"; data[password] = " ...
- ajax请求的data数据格式
ajax提交data类型 一.问题来源 今天使用ajax时,发现get传data时,传递json字符串时传不过去参数,所以做了一些实验测试ajax的get和post的传递data时的不同. 二.概念 ...
- Controller怎么接收Ajax传来的data
var json = { "VendorId": strVendorId, "VendorName": strVendorName, "Remark& ...
- ajax就收data的参数
一,变量 "data": ${cityData},//数据(必传) 二,json data:{"state":"Front"},
- jquery.form.js实现将form提交转为ajax方式提交的使用方法
本文实例讲述了jquery.form.js实现将form提交转为ajax方式提交的方法.分享给大家供大家参考.具体分析如下: 这个框架集合form提交.验证.上传的功能. 这个框架必须和jquery完 ...
- jquery.form.js实现将form提交转为ajax方式提交的方法
本文实例讲述了jquery.form.js实现将form提交转为ajax方式提交的方法.分享给大家供大家参考.具体分析如下: 这个框架集合form提交.验证.上传的功能. 这个框架必须和jquery完 ...
- 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 ...
- 一些ajax代码
$.ajax({ type : "get", url : "list_hot_ajax.json", data : {"provinceId" ...
随机推荐
- EBS MOAC相关
http://blog.csdn.net/rfb0204421/article/details/9306929 支持MOAC功能的Form开发步骤 分类: FORM2013-07-12 10:01 1 ...
- 动态载入DLL所需要的三个函数详解(LoadLibrary,GetProcAddress,FreeLibrary)
动态载入 DLL 动态载入方式是指在编译之前并不知道将会调用哪些 DLL 函数, 完全是在运行过程中根据需要决定应调用哪些函数. 方法是:用 LoadLibrary 函数加载动态链接库到内存,用 Ge ...
- Delphi 动态链接库的动态和静态调用 (仔细读一下)
http://blog.163.com/bxf_0011/blog/static/35420330200952075114318/ 为了让人能快速的理解 静态调用.动态调用,现在做一个函数封装在一个D ...
- Android-卖票案例static-不推荐此方式
需求描述:四个窗口一起卖票,把10张票卖完,不许多卖 先看一个错误的案例: package android.java.thread06; /** * 售票线程 */ class Booking ext ...
- Android adb shell data目录,Permission denied
Android adb shell进入data目录,Permission denied 权限被拒绝 在shell里面输入su root,去申请root权限,注意:有小部分手机是需要点击授权,再次执行c ...
- CNN的学习笔记
1.卷积核的概念,卷积核的size,就是滑动窗口的大小,例如原始数据为28*28的手写数字,滑动窗口size为5*5,则卷积核的size为5*5.卷积核就是权重集合,就是5*5+1.1表示偏置项.卷积 ...
- 哎呀,我艹,使用tfs时候,离职人员锁定了代码.
哎呀,我艹,使用tfs时候,离职人员锁定了代码. 而且离职人员电脑已经回收,被格式化了,怎么破? 不管别人是有意,还是无意,总之就是需要搞定了. 1.第一步 首先,找到被锁住的工作区一般在报错信息中可 ...
- Day71 分页,cookie and Session
cookie 是保存在客户端的键值对. cookie本身最大支持4096字节,保存在客户端的 session是保存在服务器端的键值对.(依赖cookie) cookie和session cookie的 ...
- fedora 国内源
wget http://mirrors.163.com/.help/fedora-163.repowget http://mirrors.163.com/.help/fedora-updates-16 ...
- Mysql的Text和Blob的比较
MySQL存在text和blob: (1)相同 在TEXT或BLOB列的存储或检索过程中,不存在大小写转换,当未运行在严格模式时,如果你为BLOB或TEXT列分配一个超过该列类型的最大长度的值,值被截 ...