现在有一个全局 DoAjax.aspx 页面:
所有的 Ajax 请求都请求该页面:这时:  有一个请求 DoAjax.aspx?Axtion=001&A=1&b=2
        DoAjax.aspx 本身不出力 请求,只是将 请求转发给 Ajax001.aspx         核心问题:如何让 Ajax001.aspx 获得 A,B 两个参数??
                  当 Ajax001.aspx 响应,并返回一段 HTML 脚本之后,DoAjax.aspx 如何获得 这段 HTML,且转发回 请求端??

同样,对于 DoAjax.aspx?Axtion=002&A=1&b=2
        DoAjax.aspx  也会将数据 转发给 Ajax002.aspx 并获取响应后,转发回客户端!

解决方案 »

  1.   

    LZ使用的是get传参方式,百度一下就可以获取在DoAjax.aspx页获取Axtion=001、A=1和b=2了问题是还要发给其他页面再取回调,感觉有点儿怪异,直接在DoAjax.aspx.cs调用其他类或方法不知道可不可以
     
      

  2.   

    直接都ajax那页面获取Request[""]需要返回的话直接Response.Write(值)
    Responese.End()
      

  3.   


    你的这种做法:假如 有 100个 Ajax.aspx 子页面,每个页面都有2个参数: 全部需要用 DoAjax.aspx 调度!
    ——这时,你的做法就要在  DoAjax.aspx 中,捕获 200 个参数,然后转发;
    ——且调用时的传值方式,可能PSOT,可能 GET;总之要在  DoAjax.aspx 完全不理会 传进来的参数有什么,直接将参数 转发给指定的页面!
      

  4.   


    ——DoAjax.aspx 完全不理会 参数,只是通过 Action 参数,将 请求转发给 其他页面,再有 子页面获取参数,处理请求!——Request[""] ,这个是不可以的:因为我不知道 将来的 新增的子页面 还会有哪些参数!
           如果用这种做法,我每添加一个 子页面,我就要改动一下  DoAjax.aspx 的代码!!
           ——这就有违我的 DoAjax.aspx  只做调度的想法! 
      

  5.   

    我的意思是DoAjax.aspx 把值分派给类返回值会比较容易,至于用反射还是其他方法实现都不影响
      

  6.   

    现在正在 尝试中:
        protected void Page_Load(object sender, EventArgs e)
        {
            Dictionary<string, string> listKey = new Dictionary<string, string>();
            foreach (string sKey in Request.Form.AllKeys)
                if (!listKey.ContainsKey(sKey))
                    listKey.Add(sKey, Request[sKey]);        foreach (string sKey in Request.QueryString.AllKeys)
                if (!listKey.ContainsKey(sKey))
                    listKey.Add(sKey, Request[sKey]);        
                    if (!string.IsNullOrWhiteSpace(Action))
            {
                string sUrl = string.Format("Test{0}.aspx", Action);
                Response.Redirect(sUrl);
            }
        }——现在就看怎么将 收集到的参数,和 指定的 URL ,发送出去并接收到返回值了!
      

  7.   

    可以了:
    代码如下:    protected string Action
        {
            get { return (string.Empty + Request["Action"]).Trim(); }
        }
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!string.IsNullOrWhiteSpace(Action))
            {
                string sUrl = string.Format("Test{0}.aspx", Action);
                Server.Transfer(sUrl, true);
            }
        }
    ——这时:  Test.aspx?Ation=001  的请求会 转发给 Test001.aspx  ——且 提交的表单数据也 会一并 转发给  Test001.aspx  
    ————————————————————————————————————
    这所以这样做,是因为:当你 一个页面,用于执行过多的 Ajax,代码会不断的增加,直到现在的 3000-5000 行;
    而这时,要维护时,你要在  几百个函数里面跳转查找自己 需要到哪里去修改!!
    ——而且极有可能出错!!!或者改好了这里,却又 破坏了 另外的代码(而你此时完全不知道)!————————————————————————————————————
    换言之:
    页面重新转发之后:一个页面的请求被分给了 几十个 子页面,5000行代码 给 平均分掉了;
    这时:如果你要修改 其中的一个 Action,你就只用在 几十-几百行代码之间折腾,且不用担心 影响其他逻辑!!!————————————————————————————————————
    扩展性:
    对于一个 大型的 网站来说:假如 我只要子页面,500个 Ajax 请求,如果分别放置的话:就需要 500个 .aspx 页面——你看着不恶心吗??而如果用到了调度:
    我执行请求的部分可以使用反射等形式: 
    子页面不一定要是 .aspx 文件,也可能是 一个.cs 文件;
         (一个类库文件中放500个.cs 文件,
         肯定比 一个 网站中放1000个 .aspx 文件(.aspx+.aspx.cs)  看着舒服一些!)甚至用插件的方式 对 Ajax 的功能进行扩展!!——插件的扩展肯定比 修改 5000行代码之后,重新编译要安全很多!!!不是么?? 
      

  8.   

    再比如说:
    一个小组,分别去写  500个 Ajax子页面,终于写完了;——结果:遇到了 IE 的 Ajax 缓存问题
    ——这可是Ajax 中的 吐血问题:你是觉得又去 每个页面中,加上 “禁止缓存的头标签”容易:
        还是在 调度页 准备返回响应时 这一个地方 加上 “禁止缓存的头标签”容易??工作效率 瞬间 为 500:1  ——  这才是生产力呀!!