如何在.net里实现把独立FrameSet里的Forms参数传递给另一个FrameSet里的.aspx文件。

类别:.NET开发 点击:0 评论:0 推荐:


如何在.net里实现把独立FrameSet里的Forms参数传递给另一个FrameSet里的.aspx文件。

首先申明这个文章将要用到两个FramSet:

A FrameSet:Serach Forms
B FrameSet:DataList Forms


一般我们在.net开发的时候都是在同一个文件的来写代码的,也就是后代码方式,不过,在.net的开发过程中,由于为了方便界面查询,以及
整体的FrameSet效果有时候不幸将查询的Form写在了一个单独的.aspx文件里,查询的结果放在了另一个FrameSet里的.aspx文件里,
这个显示查询结果的的.aspx文件包含一个.ascx用户控件。


由于.net开发有别于传统的asp开发,如何在.net里实现把独立FrameSet里的Forms参数传递给另一个FrameSet里的.aspx文件。


在这里。我使用Page.Server.Transfer来实现

首先需要指定A FrameSet:Serach Forms的target=B Frame Name,可以编程的方式设置this.Forms.target=。。。


然后在B FrameSet:DataList Forms

注意我这里的这个B FrameSet:DataList Forms可以同时接受Get和Form访问的参数访问
但是请注意。由于在A FrameSet:Serach Forms里用到了Page.Server.Transfer

A FrameSet:Serach Forms 部分代码:

   string msgStatus=drpStatus.Items[drpStatus.SelectedIndex].Value;
   string tempURLParam="/B FrameSet/DataList Forms/Search.aspx?statusCode="+msgStatus;
   Page.Server.Transfer(tempURLParam);

 

所以在B FrameSet:DataList Forms里需要向下面这样来写,不然你接受不到Page.Server.Transfer(tempURLParam)过来的参数。
最重要的是当用Transfer过来时,你一定认为此时应该用Request.Form来接受表单参数,
那你就会发现。我永远也接受不到A Forms的值。
虽然通过跟踪,可以发现此时Request.ServerVariables["REQUEST_METHOD"]确实等于POST,但是你不能想到用Form方式来取A FrameSet:Serach Forms的值,是取不到的。

所以我们在Transfer(tempURLParam)里带上A Forms选择的参数。如下传递:
   string msgStatus=drpStatus.Items[drpStatus.SelectedIndex].Value;
   string tempURLParam="/B FrameSet/DataList Forms/Search.aspx?statusCode="+msgStatus;
   Page.Server.Transfer(tempURLParam);

这样就把A FrameSet:Serach Forms里的表单参数传递过去了,看看前面我门为什么在这里不用Request.Form而用Request.QueryString的原因

下面是B FrameSet:DataList Forms 接受A FrameSet:Serach Forms的部分代码:


    if(Request.ServerVariables["REQUEST_METHOD"].ToString().ToUpper()=="GET")
    {

     Response.Write("<Script>");
     Response.Write("alert('"+Request.ServerVariables["REQUEST_METHOD"].ToString()+"')");
     Response.Write("</Script>");


     if ( Request.QueryString["statusCode"] == null )
     {
      statusCode_Param = "All";
     }
     else
     {
      statusCode_Param = Request.QueryString["statusCode"].ToString();

     }

    }
    else
    {
     //注意必须写成querystring的形式
     if ( Request.QueryString["statusCode"] == null )
     {
      statusCode_Param = "All";
     }
     else
     {
      statusCode_Param = Request.QueryString["statusCode"].ToString();

     }


    }

    
   }

   //再传给另一个.ascx,我用的是ascx.
   mySearchSMS_Adv.MsgStatus = statusCode_Param;


完.

 

 

 

 

本文地址:http://com.8s8s.com/it/it42925.htm