页面传值的另一种办法

From :
http://hi.baidu.com/lh_zn/blog/item/4b042ead71042b084a36d6b9.html
http://www.cnblogs.com/RuiLei/archive/2007/02/09/645878.aspx

*此次的程序主要解决了页面之间接收和传递多个参数的问题。

思路:以XML配置化的思想编写此DEMO的。
            主要对项目中参数接收和传递做到可配置化,宜维护。。.

文字流程图:1.A页面Response.Write一个Form到B页面;
                        2.B页面接收之后,B页面中有"下一步按钮",Press Button之后,提交从A Page接收到C Page.
                   
A Page:-----Default.aspx
B.Page------WebForm1.aspx
C.Page------WebForm2.aspx
CommonClass -----ParamClass
PageBaseClass-----BaseIPage
XML-----ParamDictionary.xml

以下是代码,供参考

ParamDictionary.xml

<ParamsDictionary>
  
<Param key="orderid" value=""/>
  
<Param key="FAV_FID1" value=""/>
  
<Param key="FAV_Status1" value=""/>
  
<Param key="FAV_NeedCheck1" value=""/>
  
<Param key="FAV_FID2" value=""/>
  
<Param key="FAV_Status2" value=""/>
  
<Param key="FAV_NeedCheck2" value=""/>
  
<Param key="FAV_CheckLine" value=""/>
  
<Param key="FlightWay" value=""/>
  
<Param key="HomeCity" value=""/>
  
<Param key="DestCity1" value=""/>
  
<Param key="DDatePeriod1" value=""/>
  
<Param key="startPeriod" value=""/>
  
<Param key="DestCity2" value=""/>
  
<Param key="startPeriod2" value=""/>
  
<Param key="ADatePeriod1" value=""/>
  
<Param key="TicketAgency_List" value=""/>
  
<Param key="ChildType" value=""/>
  
<Param key="Quantity" value=""/>
  
<Param key="DSeatClass" value=""/>
  
<Param key="AirlineChoice" value=""/>
  
<Param key="EMoneyIDList" value=""/>
  
<Param key="GetNeedGuarantee" value=""/>
  
<Param key="IsSubmitTempOrder" value=""/>
  
<Param key="NoSignupLogin" value=""/>
</ParamsDictionary>

    public partial class _Default : System.Web.UI.Page
    
{
        
protected void Page_Load(object sender, EventArgs e)
        
{
            
//Test Data
            string responseString = 
                
"<Form id=\"frmTemp\" action=\"WebForm1.aspx\" method=\"post\">" +
                
"<input type=\"hidden\" name=\"orderid\" value=\"1111\">" +
                
"<input type=\"hidden\" name=\"FAV_FID1\" value=\"2222\">" +
                
"<input type=\"hidden\" name=\"FAV_Status1\" value=\"3333\">" +
                
"<input type=\"hidden\" name=\"FAV_NeedCheck1\" value=\"4444\">" +
                
"<input type=\"hidden\" name=\"FAV_FID2\" value=\"5555\">" +
                
"<input type=\"hidden\" name=\"FAV_Status2\" value=\"6666\">" +
                
"<input type=\"hidden\" name=\"FAV_NeedCheck2\" value=\"7777\">" +
                
"<input type=\"hidden\" name=\"FAV_CheckLine\" value=\"8888\">" +
                
"<input type=\"hidden\" name=\"FlightWay\" value=\"9999\">" +
                
"<input type=\"hidden\" name=\"HomeCity\" value=\"aaaa\">" +
                
"<input type=\"hidden\" name=\"DestCity1\" value=\"bbbbb\">" +
                
"<input type=\"hidden\" name=\"DDatePeriod1\" value=\"ccccc\">" +
                
"<input type=\"hidden\" name=\"startPeriod\" value=\"eeee\">" +
                
"<input type=\"hidden\" name=\"DestCity2\" value=\"ffff\">" +
                
"<input type=\"hidden\" name=\"startPeriod2\" value=\"ggggg\">" +
                
"<input type=\"hidden\" name=\"ADatePeriod1\" value=\"qqqq\">" +
                
"<input type=\"hidden\" name=\"TicketAgency_List\" value=\"wwwww\">" +
                
"<input type=\"hidden\" name=\"ChildType\" value=\"eeeee\">" +
                
"<input type=\"hidden\" name=\"Quantity\" value=\"iiiiii\">" +
                
"<input type=\"hidden\" name=\"DSeatClass\" value=\"jjjjj\">" +
                
"<input type=\"hidden\" name=\"AirlineChoice\" value=\"ppppp\">" +
                
"<input type=\"hidden\" name=\"EMoneyIDList\" value=\"vvvvv\">" +
                
"<input type=\"hidden\" name=\"GetNeedGuarantee\" value=\"xxxxxx\">" +
                
"<input type=\"hidden\" name=\"IsSubmitTempOrder\" value=\"sssss\">" +
                
"<input type=\"hidden\" name=\"NoSignupLogin\" value=\"llllll\">" +

                
"</form><script language=\"javascript\">document.getElementById(\"frmTemp\").submit();</script>";

            Response.Write(responseString);
        }

    }


 public partial class WebForm1 : BaseIPage
    
{
        
private ParamClass paramClass = new ParamClass();

        
private BaseIPage basePage = new BaseIPage();

        
protected void Page_Load(object sender, EventArgs e)
        
{
            NameValueCollection _hiddenVariables 
= new NameValueCollection();

            
//Check RequestForm
            if (paramClass.CheckFormIsNull(Request.Form) == true)
            
{
                
//从RequestForm中取值,并存放到Dictionary
                Dictionary<String, String> paramsDictionary = paramClass.SaveParamsToDictionary(Request.Form, basePage.XMLPath);

                
//输出hidden到Page
                paramClass.WriteHiddenField(paramClass.ParseTempString(paramsDictionary, _hiddenVariables), Page.ClientScript);
            }

        }


        
protected void Button1_Click(object sender, EventArgs e)
        
{
            
//Check RequestForm
            if (paramClass.CheckFormIsNull(Request.Form) == true)
            
{
                
//从RequestForm中取值,并存放到Dictionary
                Dictionary<String, String> paramsDictionary = paramClass.SaveParamsToDictionary(Request.Form, basePage.XMLPath);

                
//跳转下一页,并传递参数
                
//string url = "http://" + ViewState["ServerName"].ToString() + "/Domestic/ConfirmOrder.aspx";
                Response.Write(paramClass.ParseTempString(paramsDictionary, "WebForm2.aspx"));
            }

        }

    }

 public partial class WebForm2 : BaseIPage
    
{
        
private ParamClass paramClass = new ParamClass();

        
private BaseIPage basePage = new BaseIPage();

        
protected void Page_Load(object sender, EventArgs e)
        
{
            NameValueCollection _hiddenVariables 
= new NameValueCollection();

            
//Check RequestForm
            if (paramClass.CheckFormIsNull(Request.Form) == true)
            
{
                
//从RequestForm中取值,并存放到Dictionary
                Dictionary<String, String> paramsDictionary = paramClass.SaveParamsToDictionary(Request.Form, basePage.XMLPath);

                
//输出hidden到Page
                paramClass.WriteHiddenField(paramClass.ParseTempString(paramsDictionary, _hiddenVariables), Page.ClientScript);
            }

        }

    }


 public class ParamClass
    
{
        CheckFormIsNull
CheckFormIsNull

        SaveParamsToDictionary
SaveParamsToDictionary

        ParamDictionary
ParamDictionary

        ParseTempString
ParseTempString

        WriteHiddenField
WriteHiddenField
    }


  public class BaseIPage : System.Web.UI.Page
    
{
        
/**//// <summary>
        
/// XmlPath
        
/// </summary>

        public String XMLPath
        
{
            
get
            
{
                
return Server.MapPath("~/ParamDictionary.xml");
            }

        }

    }

注意需要增加如下引用
using System.Xml;
using System.Collections.Specialized;
using System.Collections.Generic;
using System.Text;

代码部分说明:
参数传递依靠的是
<BODY> 

<Form id="frmTemp" action="WebForm1.aspx" method="post">
<input type="hidden" name="orderid" value="1111">
<input type="hidden" name="FAV_FID1" value="2222">
<input type="hidden" name="FAV_Status1" value="3333">
<input type="hidden" name="FAV_NeedCheck1" value="4444">
<input type="hidden" name="FAV_FID2" value="5555">
<input type="hidden" name="FAV_Status2" value="6666">
<input type="hidden" name="FAV_NeedCheck2" value="7777">
<input type="hidden" name="FAV_CheckLine" value="8888">
<input type="hidden" name="FlightWay" value="9999">
<input type="hidden" name="HomeCity" value="aaaa">
<input type="hidden" name="DestCity1" value="bbbbb">
<input type="hidden" name="DDatePeriod1" value="ccccc">
<input type="hidden" name="startPeriod" value="eeee">
<input type="hidden" name="DestCity2" value="ffff">
<input type="hidden" name="startPeriod2" value="ggggg">
<input type="hidden" name="ADatePeriod1" value="qqqq">
<input type="hidden" name="TicketAgency_List" value="wwwww">
<input type="hidden" name="ChildType" value="eeeee">
<input type="hidden" name="Quantity" value="iiiiii">
<input type="hidden" name="DSeatClass" value="jjjjj">
<input type="hidden" name="AirlineChoice" value="ppppp">
<input type="hidden" name="EMoneyIDList" value="vvvvv">
<input type="hidden" name="GetNeedGuarantee" value="xxxxxx">
<input type="hidden" name="IsSubmitTempOrder" value="sssss">
<input type="hidden" name="NoSignupLogin" value="llllll">
</form>
<script language="javascript">
document.getElementById(
"frmTemp").submit();
</script>

</BODY> 

input type="hidden"主要作用是

Input表示Form表单中的一种输入对象,其又随Type类型的不同而分文本输入框,密码输入框,单选/复选框,提交/重置按钮等,下面一一介绍。
1,type=text
输入类型是text,这是我们见的最多也是使用最多的,比如登陆输入用户名,注册输入电话号码,电子邮件,家庭住址等等。当然这也是Input的默认类型。
参数name:同样是表示的该文本输入框名称。
参数size:输入框的长度大小。
参数maxlength:输入框中允许输入字符的最大数。
参数value:输入框中的默认值
特殊参数readonly:表示该框中只能显示,不能添加修改。


<form>
your name:
<input type="text" name="yourname" size="30" maxlength="20" value="输入框的长度为30,允许最大字符数为20"><br>
<input type="text" name="yourname" size="30" maxlength="20" readonly value="你只能读不能修改">
</form>
2,type=password
不用我说,一看就明白的密码输入框,最大的区别就是当在此输入框输入信息时显示为保密字符。
参数和“type=text”相类似。
<form>
your password:
<input type="password" name="yourpwd" size="20" maxlength="15" value="123456">密码长度小于15
</form>
3,type=file
当你在BBS上传图片,在EMAIL中上传附件时一定少不了的东西:)
提供了一个文件目录输入的平台,参数有name,size。
<form>
your file:
<input type="file" name="yourfile" size="30">
</form>
4,type=hidden
非常值得注意的一个,通常称为隐藏域:如果一个非常重要的信息需要被提交到下一页,但又不能或者无法明示的时候。
一句话,你在页面中是看不到hidden在哪里。最有用的是hidden的值。

<form name="form1">
your hidden info here:
<input type="hidden" name="yourhiddeninfo" value="cnbruce.com">
</form>
<script>
alert("隐藏域的值是 "+document.form1.yourhiddeninfo.value)
</script>


5,type=button
标准的一windows风格的按钮,当然要让按钮跳转到某个页面上还需要加入写JavaScript代码
<form name="form1">
your button:
<input type="button" name="yourhiddeninfo" value="Go,Go,Go!" onclick="window.open('http://www.cnbruce.com')">
</form>


6,type=checkbox
多选框,常见于注册时选择爱好、性格、等信息。参数有name,value及特别参数checked(表示默认选择)
其实最重要的还是value值,提交到处理页的也就是value。(附:name值可以不一样,但不推荐。)

<form name="form1">
a:<input type="checkbox" name="checkit" value="a" checked><br>
b:<input type="checkbox" name="checkit" value="b"><br>
c:<input type="checkbox" name="checkit" value="c"><br>
</form>
name值可以不一样,但不推荐<br>
<form name="form1">
a:<input type="checkbox" name="checkit1" value="a" checked><br>
b:<input type="checkbox" name="checkit2" value="b"><br>
c:<input type="checkbox" name="checkit3" value="c"><br>
</form>


7,type=radio
即单选框,出现在多选一的页面设定中。参数同样有name,value及特别参数checked.
不同于checkbox的是,name值一定要相同,否则就不能多选一。当然提交到处理页的也还是value值。

<form name="form1">
a:<input type="radio" name="checkit" value="a" checked><br>
b:<input type="radio" name="checkit" value="b"><br>
c:<input type="radio" name="checkit" value="c"><br>
</form>
下面是name值不同的一个例子,就不能实现多选一的效果了<br>
<form name="form1">
a:<input type="radio" name="checkit1" value="a" checked><br>
b:<input type="radio" name="checkit2" value="b"><br>
c:<input type="radio" name="checkit3" value="c"><br>
</form>


8,type=image
比较另类的一个,自己看看效果吧,可以作为提交式图片

<form name="form1" action="xxx.asp">
your Imgsubmit:
<input type="image" src="../blog/images/face4.gif">
</form>


9,type=submit and type=reset
分别是“提交”和“重置”两按钮
submit主要功能是将Form中所有内容进行提交action页处理,reset则起个快速清空所有填写内容的功能。

<form name="form1" action="xxx.asp">
<input type="text" name="yourname">
<input type="submit" value="提交">
<input type="reset" value="重置">
</form>

posted @ 2007-05-16 17:41  jhtchina  阅读(1778)  评论(2编辑  收藏  举报