*此次的程序主要解决了页面之间接收和传递多个参数的问题。
思路:以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#region CheckFormIsNull


/**//// <summary>
/// 检查RequestForm是否为空和count>0
/// </summary>
/// <param name="requestForm"></param>
/// <returns></returns>
public bool CheckFormIsNull(NameValueCollection requestForm)

{
return (null != requestForm && requestForm.Count > 0);
}

#endregion


SaveParamsToDictionary#region SaveParamsToDictionary


/**//// <summary>
/// 把Request.Form中的内容存储到Dictionary
/// </summary>
/// <param name="nameValueCollection">Request.Form</param>
/// <returns></returns>
public Dictionary<String, String> SaveParamsToDictionary(NameValueCollection nameValueCollection, string path)

{
//把Request.Form中的值全部取出
string requestForm = Convert.ToString((nameValueCollection));

Dictionary<String, String> pageParameter = new Dictionary<String, String>();

if (!String.IsNullOrEmpty(requestForm) == true)

{
ParamDictionary(pageParameter, path);

string[] parameters = requestForm.Split('&');

foreach (string parameter in parameters)

{
string[] param = parameter.Split('=');

if (pageParameter.ContainsKey(param[0]))

{
pageParameter[param[0]] = param[1];
}
}
}
return pageParameter;
}

#endregion


ParamDictionary#region ParamDictionary


/**//// <summary>
/// 接收的参数名字列表
/// </summary>
public void ParamDictionary(Dictionary<String, String> pageParameter, string path)

{


第一写法:用Xml#region 第一写法:用Xml
XmlDocument xmlDoc = new XmlDocument();
XmlTextReader xmlTextReader = new XmlTextReader(path);

xmlDoc.Load(xmlTextReader);

foreach (XmlNode children in xmlDoc.ChildNodes)

{
foreach (XmlNode child in children)

{
pageParameter.Add(child.Attributes["key"].Value, child.Attributes["value"].Value);
}
}
#endregion


第二写法#region 第二写法
//pageParameter.Add("orderid", String.Empty);
//pageParameter.Add("FAV_FID1", String.Empty);
//pageParameter.Add("FAV_Status1", String.Empty);
//pageParameter.Add("FAV_NeedCheck1", String.Empty);
//pageParameter.Add("FAV_FID2", String.Empty);
//pageParameter.Add("FAV_Status2", String.Empty);
//pageParameter.Add("FAV_NeedCheck2", String.Empty);
//pageParameter.Add("FAV_CheckLine", String.Empty);
//pageParameter.Add("FlightWay", String.Empty);
//pageParameter.Add("HomeCity", String.Empty);
//pageParameter.Add("DestCity1", String.Empty);
//pageParameter.Add("DDatePeriod1", String.Empty);
//pageParameter.Add("startPeriod", String.Empty);
//pageParameter.Add("DestCity2", String.Empty);
//pageParameter.Add("startPeriod2", String.Empty);
//pageParameter.Add("ADatePeriod1", String.Empty);
//pageParameter.Add("TicketAgency_List", String.Empty);
//pageParameter.Add("ChildType", String.Empty);
//pageParameter.Add("Quantity", String.Empty);
//pageParameter.Add("DSeatClass", String.Empty);
//pageParameter.Add("AirlineChoice", String.Empty);
//pageParameter.Add("EMoneyIDList", String.Empty);
//pageParameter.Add("GetNeedGuarantee", String.Empty);
//pageParameter.Add("IsSubmitTempOrder", String.Empty);
//pageParameter.Add("NoSignupLogin", String.Empty);
#endregion
}

#endregion


ParseTempString#region ParseTempString


/**//// <summary>
/// 拼凑一个临时跳转Form
/// </summary>
/// <param name="paramsDictionary"></param>
/// <param name="url"></param>
/// <returns></returns>
public string ParseTempString(Dictionary<String, String> paramsDictionary, string url)

{
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.Append("<html><body><form id=\"frmCreditCardTemp\" action=\"" + url + "\" method=\"post\">");

foreach (string key in paramsDictionary.Keys)

{
stringBuilder.Append("<input type=\"hidden\" name=\"" + key + "\" value=\"" + paramsDictionary[key].ToString() + "\">");
}

stringBuilder.Append("</form><script language=\"javascript\">document.getElementById(\"frmCreditCardTemp\").submit();</script></body></html>");
return stringBuilder.ToString();
}


/**//// <summary>
/// 拼凑一个一个Hidden,输出到页面中
/// </summary>
/// <param name="paramsDictionary">参数列表</param>
/// <param name="hiddenParams"></param>
/// <returns></returns>
public NameValueCollection ParseTempString(Dictionary<String, String> paramsDictionary, NameValueCollection hiddenParams)

{
foreach (string key in paramsDictionary.Keys)

{
hiddenParams.Add(key, paramsDictionary[key]);
}
return hiddenParams;
}

#endregion


WriteHiddenField#region WriteHiddenField


/**//// <summary>
/// 以hidden Field的形式输出到页面
/// </summary>
public void WriteHiddenField(NameValueCollection hiddenVar, ClientScriptManager sm)

{
for (int i = 0; i < hiddenVar.Count; i++)

{
sm.RegisterHiddenField(hiddenVar.GetKey(i), hiddenVar[i]);
}
}

#endregion
}
public class BaseIPage : System.Web.UI.Page

{

/**//// <summary>
/// XmlPath
/// </summary>
public String XMLPath

{
get

{
return Server.MapPath("~/ParamDictionary.xml");
}
}
}