项目中使用的ajax异步读取数据结构设计
设计稍微复杂了一点,完成ajax读取功能涉及到了很多页面。虽然如此,但感觉比较灵活。
和传统方法唯一的区别在于多了一层数据容器控件,里面提供了显示数据的HTML元素及相应的JS方法。
这样数据控件指生成纯数据。
ajax异步读取
使用了jQuery.ajax,通过ajax POST方式请求后台处理ashx页面,并传递相关参数。
ashx
完成动态加载用户控件,并根据接收的参数对控件的属性进行赋值。
加载控件,借助于博客园老赵的一篇博文,链接找不到了,以后再补。
- public class ViewManager<T> where T : System.Web.UI.UserControl
- {
- private System.Web.UI.Page m_pageHolder;
- public T LoadViewControl(string path)
- {
- this.m_pageHolder = new System.Web.UI.Page();
- return (T)this.m_pageHolder.LoadControl(path);
- }
- public string RenderView(T control)
- {
- StringWriter output = new StringWriter();
- this.m_pageHolder.Controls.Add(control);
- HttpContext.Current.Server.Execute(this.m_pageHolder, output, false);
- return output.ToString();
- }
- }
代码很少,确很实用。
反射赋值
- foreach (System.Reflection.PropertyInfo p in control.GetType().GetProperties(System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Instance))
- {
- if (string.IsNullOrEmpty(context.Request[p.Name])) continue;
- try
- {
- Convert.ChangeType(context.Request[p.Name], p.PropertyType);
- p.SetValue(control, Convert.ChangeType(context.Request[p.Name], p.PropertyType), null);
- }
- catch (System.InvalidCastException e)
- {
- }
- }
具体使用
- ViewManager<Web.controls.PageControl> viewManager = new ViewManager<Web.controls.PageControl>();
- Web.controls.PageControl control = viewManager.LoadViewControl("~/upload/controls/" + name);
- foreach (System.Reflection.PropertyInfo p in control.GetType().GetProperties(System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Instance))
- {
- if (string.IsNullOrEmpty(context.Request[p.Name])) continue;
- try
- {
- Convert.ChangeType(context.Request[p.Name], p.PropertyType);
- p.SetValue(control, Convert.ChangeType(context.Request[p.Name], p.PropertyType), null);
- }
- catch (System.InvalidCastException e)
- {
- }
- }
- context.Response.Write(viewManager.RenderView(control));
数据控件
使用asp:Repeater显示数据。
项目中使用的ajax异步读取数据结构设计的更多相关文章
- ajax异步获取数据后动态向表格中添加数据(行)
因为某些原因,项目中突然需要做自己做个ajax异步获取数据后动态向表格中添加数据的页面,网上找了半天都没有 看到现成的,决定自己写个例子 1.HTML页面 <!doctype html> ...
- jQuery选取所有复选框被选中的值并用Ajax异步提交数据
昨天和朋友做一个后台管理系统项目的时候涉及到复选框批量操作,如果用submit表单提交挺方便的,但是要实现用jQuery结合Ajax异步提交数据就有点麻烦了,因为我之前做过的项目中基本上没用Ajax来 ...
- corefx 源码学习:NetworkStream.ReadAsync 是如何从 Socket 异步读取数据的
最近遇到 NetworkStream.ReadAsync 在 Linux 上高并发读取数据的问题,由此激发了阅读 corefx 中 System.Net.Sockets 实现源码(基于 corefx ...
- 09.VUE学习之watch监听属性变化实现类百度搜索栏功能ajax异步请求数据,返回字符串
cmd下安装axios npm install axios 安装好后,会多出node_modules文件夹 思路: 监听data里的word改变时,发送ajax异步请求数据, 把返回的数据赋值给dat ...
- 为什么在项目中data需要使用return返回数据呢?
问:为什么在项目中data需要使用return返回数据呢? 答:不使用return包裹的数据会在项目的全局可见,会造成变量污染:使用return包裹后数据中变量只在当前组件中生效,不会影响其他组件.
- 其它课程中的python---6、python读取数据
其它课程中的python---6.python读取数据 一.总结 一句话总结: 记常用和特例:慢慢慢慢的就熟了,不用太着急,慢慢来 库的使用都很简单:就是库的常用函数就这几个,后面用的时候学都来得及. ...
- ajax中的同步与异步修改数据的问题
这次项目中因为前端有事儿,项目紧急加个新需求,于是自己硬着头皮上去看了下前端的逻辑后便开始动手了,但是为了简单起见就直接自己写了个ajax调服务来获取数据,然后修改前端定义的全局数据 //ajax来请 ...
- flask+sqlite3+echarts3+ajax 异步更新数据
结构: /www | |-- /static |....|-- jquery-3.1.1.js |....|-- echarts.js(echarts3是单文件!!) | |-- /templates ...
- 解决ajax异步请求数据后swiper不能循环轮播(loop失效)问题、滑动后不能轮播的问题。
问题描述: 1.我使用axios异步请求后台的图片进行渲染后不能实现循环轮播,也就是loop失效,但是静态写死的情况下不会出现这种问题. 2. 分析: swiper的机制是:初始化的时候将swiper ...
随机推荐
- 刘汝佳 算法竞赛-入门经典 第二部分 算法篇 第六章 1(Lists)
127 - "Accordian" Patience 题目大意:一个人一张张发牌,如果这张牌与这张牌前面的一张或者前面的第三张(后面称之为一位置和三位置)的点数或花式相同,则将这张 ...
- elasticsearch 八、重要的配置更改
http://jingyan.baidu.com/article/7908e85c9fc626af491ad263.html
- **Apache Options指令详解
http://www.365mini.com/page/apache-options-directive.htm Options指令是Apache配置文件中一个比较常见也比较重要的指令,Options ...
- .bat后台运行
可以编辑一个vbs脚本,在其中以隐藏窗口运行批处理程序. ------------------------------------------------------------ Set ws = C ...
- js的in运算符与instanceof运算符
in运算符:希望他的左操作数是一个字符串或可以转换为字符串,希望他的右操作数是一个对象.如果右操作数的对象拥有一个名为左操作数值的属性名,那么表达式返回true. var point= {x:1,y: ...
- Shell脚本基础II
1.shell算术运算 1)加法 r=`expr 4 + 5`(注意! '4' '+' '5' 这三者之间要有空白) r=$[ 4 + 5 ] r=$(( 4 + 5 )) echo $r 2)乘法 ...
- Control character in cookie value, consider BASE64 encoding your value
这是因为你给Cookie设置了中文的value,比如Cookie c = new Cookie("user", "张三");
- Java日期转换SimpleDateFormat格式大全(转)
24小时制时间显示: public class Datetime { public static void main(String args[]){ java.util.Date current=ne ...
- LabelMe图像数据集下载
Download MATLAB Toolbox for the LabelMe Image Database 利用Matlab Toolbox工具箱下载图像库 一.下载Matlab Toolbox工具 ...
- Case 架构的实际应用-2
Test Plan in TestLink 1. For new release, we will create 2 test plans for each project 2. 1st test p ...