项目中使用的ajax异步读取数据结构设计
2024-08-22 20:10:56
设计稍微复杂了一点,完成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显示数据。
最新文章
- 树莓派3B的食用方法-1(装系统 网线ssh连接)
- JS运动基础
- bzoj3732: Network--kruskal最小生成树+LCA
- [转载] A set of top Computer Science blogs
- ajax案例源码
- HDU5780 gcd (BestCoder Round #85 E) 欧拉函数预处理——分块优化
- 知识备忘phpcms 简单解析一 数据表字段
- C# 通过ImportNode AppendChild方法合并XmlDocument,XML转为DataTable
- 对Qt下对话服务器客户端的总结(MyTcpServer与MyTcpClient)
- (中级篇 NettyNIO编解码开发)第八章-Google Protobuf 编解码-2
- 研究比对搞定博客 canvas-nest.js
- Applets的分析
- jquery.cookie.js写入的值没有定义
- (转)Maven pom.xml 配置详解
- 开发框架-Web-Java:JeePlus
- 剑指offer(一):二维数组中的查找
- User-Defined Components Must Be Capitalized
- Hierarchical query-层次查询之START WITH CONNECT BY用法
- web spring 容器
- 洛谷P1710 地铁涨价 图论
热门文章
- Python 融于ASP框架
- POJ 1144 Network(Tarjan)
- VISO下载地址
- SPRING IN ACTION 第4版笔记-第十章Hitting the database with spring and jdbc-004-使用NamedParameterJdbcTemplate
- 如何用crontab运行一个图形化界面的程序
- iOS &; Mac 调试命令(VMMap&;Top)
- C中调用LUA回调(LUA注册表)
- 14_把文件存放在SDCard
- PHP中对数据库操作的封装
- 17.allegro导入导出[原创]