项目中使用的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异步读取数据结构设计

时间: 2024-08-01 09:41:36

项目中使用的ajax异步读取数据结构设计的相关文章

jQuery选取所有复选框被选中的值并用Ajax异步提交数据

昨天和朋友做一个后台管理系统项目的时候涉及到复选框批量操作,如果用submit表单提交挺方便的,但是要实现用jQuery结合Ajax异步提交数据就有点麻烦了,因为我之前做过的项目中基本上没用Ajax来批量提交复选框数据,今天用到了就分享一下. 由于我做的项目一些地方比较复杂,这里我只举一个小例子,能理解就好. 首先,我做了一个简单的多个复选框的界面,如图: 这是一个比较简单的多个复选框提交界面.代码如下: 1 <body> 2 <div> 3 <input type=&quo

项目中碰到的Ajax相关的问题记录

需求描述: 第一步:通过controller1,进入到前端页面1,输入计算参数,点击按钮,对数据进行处理: 第二步:通过Ajax异步操作进入到controller2,得到数据之后,返回给Ajax,在success函数中进行显示,或者带数据进行页面跳转: 第三步:最后在新的页面进行数据展示. 问题一:Ajax参数问题(ps:要搞清楚各参数代表的意义,否则无从下手): 这里列出几个比较常用的参数:(.ajax,.get,.post,.getJson几种方法基本差不多) url: (String) 请

09.VUE学习之watch监听属性变化实现类百度搜索栏功能ajax异步请求数据

cmd下安装axios npm install axios 安装好后,会多出node_modules文件夹 思路: 监听data里的word改变时,发送ajax异步请求数据, 把返回的数据赋值给data里的result,再传给模板里 9.html <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible&qu

winform 异步读取数据 小实例

这几天对突然对委托事件,异步编程产生了兴趣,大量阅读前辈们的代码后自己总结了一下. 主要是实现 DataTable的导入导出,当然可以模拟从数据库读取大量数据,这可能需要一定的时间,然后 再把数据导入到xml excel等.做了个小实例模拟了一下.特此帖出来以便日后查阅 先上效果图 然后贴上代码 1 using System; 2 using System.Collections.Generic; 3 using System.ComponentModel; 4 using System.Dat

Jquery和Javascript 实际项目中写法基础-ajax和json (3)

一.什么是JSON数据? 一种轻量级的数据交换格式.实际中知道如何使用即可. 软件开发我认为就是一个会用,然后知其原理的过程. 例子如下: <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <script type="text/javascript" src="js/jquery-1.11.0.js" ></script&

ajax异步发送数据到后台中文乱码的问题

这是今天在做一个文本输入框数据自动补全的需求的时候遇到的一个问题,这个需求就是类似我们使用百度或者google的时候,在搜索框里面输入关键字然后会自动补全一些相应的关键字供我们选择. 自动补全的话我们需求异步的和后台进行数据交互,根据用户输入的关键字去匹配数据库中的记录,然后返回结果工用户选择,需要用到ajax进行数据交互.最开始的实现大致如下. //获取输入的关键字 var keyWord = $("#inputField").val(); //构造查询的url var url =

vue项目中使用mockjs模拟接口返回数据

Mock.js 是一个模拟数据生成器,利用它,可以拦截ajax请求,直接模拟返回数据,这样前后端只要约定好数据格式,前端就不需要依赖后端的接口,可以直接使用模拟的数据了. 网上介绍mock的教程也较多,不过大多数看的比较模糊.其实使用起来非常简单,这里介绍在Vue工程中使用Mockjs,并且实现开发和生产配置化. 一.安装 cnpm install --save-dev mockjs 二.引入 为了只在开发环境使用mock,而打包到生产环境时自动不使用mock,我们可以在env中做一个配置 //

ajax异步提交数据动态更改select选项

<!DOCTYPE html> <html> <head> <title></title> <script src="../jquery/jquery.min.js" type="text/javascript" charset="utf-8"></script> </head> <script type="text/javascrip

Android应用中使用AsyncHttpClient来异步网络数据(转载)

摘要: 首先下载AsyncHttpClient的库文件,可以自行搜索,可以到下面地址下载 http://download.csdn.net/detail/xujinyang1234/5767419 测试的Activity,用到了RequstClient,LoadCacheResponseLogin... 首先下载AsyncHttpClient的库文件,可以自行搜索,可以到下面地址下载 http://download.csdn.net/detail/xujinyang1234/5767419 测试