在ASP.NET应用程序中,我们经常需要在页面间传递参数,经常使用的方法有如下几种:
1、用receive.aspx?id=5&code=3的形式将参数传到接收页面,然后在接收页面用Request.QueryString()方法得到参数值,这种最简单,但是有长度不能超过256K的限制
2、使用隐藏域<input name="code" type="hidden" >,将要需要传送的参数值赋给该隐藏域的Value,然后将该页面用Server.Transfer方法重定向到接收页面,在接收页面用Request.Form["code"]方法得到参数值,该方法可以突破256K的限制,但页面需重定向,隐藏域的值不是很安全。
3、使用Session,Application在页面间传参数,这样传递比较安全,但微软提供这些对象初衷不是用来传递页面参数的。
4、我自己的一种方法,具体思路,先将需要传递的参数组织成键值对存放在XML文件中,在用XMLHTTP将该文件发送到接收页面,在接收页面中解析该xml文件得到参数,这种方法不光光可以可以传递普通参数,还可以将对象系列化成XML文件后传到接收页面,而且整个过程可以做到发送页面不刷新,可以传送大对象,并且可以将传递的参数在接收页面进行处理,再将处理结果返回到发送页面,下面描述一下具体的实现过程:
我需要传送的XML文件如下:
包含键值对的XML文件
1
<?xml version="1.0"?>
2
<root>
3
<param key="0" value="value0" />
4
<param key="1" value="value1" />
5
<param key="2" value="value2" />
6
<param key="3" value="value3" />
7
<param key="4" value="value4" />
8
</root>
在发送页面组合该XML文件的代码如下:
组织参数
1
var xmlhttp=null;
2
if (window.XMLHttpRequest)
3

{
4
xmlhttp = new XMLHttpRequest();
5
}
6
if (!xmlhttp&&window.ActiveXObject)
7

{
8
try
9
{
10
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP.5.0")
11
}
12
catch(e)
13
{
14
try
15
{
16
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP.4.0")
17
}
18
catch(e)
19
{
20
try
21
{
22
new ActiveXObject("Msxml2.XMLHTTP")
23
}
24
catch(e)
25
{
26
try
{new ActiveXObject("Microsoft.XMLHTTP")}
27
catch(e)
28
{}
29
}
30
}
31
}
32
}
33
function sendParameter()
34

{
35
var xmldoc = new ActiveXObject("Microsoft.XMLDOM");
36
xmldoc.loadXML('<?xml version="1.0"?><root/>');
37
for(var i=0;i<5;i++)
38
{
39
var node = xmldoc.createNode(1,"param","");
40
var attribID = xmldoc.createAttribute("key");
41
attribID.value = i;
42
node.setAttributeNode(attribID);
43
var attribIDCode = xmldoc.createAttribute("value");
44
attribIDCode.value = "value" + i;
45
node.setAttributeNode(attribIDCode);
46
xmldoc.documentElement.appendChild(node);
47
}
48
49
xmlhttp.open("POST","upload.aspx",true);
50
xmlhttp.onreadystatechange = rep
51
xmlhttp.send(xmldoc);
52
}
在接收页读取并解析XML文件
读取解析XML文件
1
protected void Page_Load(object sender, EventArgs e)
2
{
3
if (!IsPostBack)
4
{
5
XmlDocument xmlDoc = new XmlDocument();
6
xmlDoc.Load(Request.InputStream);
7
XmlElement xmlElement = xmlDoc.DocumentElement;
8
9
for (int i = 0; i < xmlElement.ChildNodes.Count; i++)
10
{
11
}
12
}
13
}
http://www.cnblogs.com/weiweictgu/archive/2007/03/08/667843.aspx
1、用receive.aspx?id=5&code=3的形式将参数传到接收页面,然后在接收页面用Request.QueryString()方法得到参数值,这种最简单,但是有长度不能超过256K的限制
2、使用隐藏域<input name="code" type="hidden" >,将要需要传送的参数值赋给该隐藏域的Value,然后将该页面用Server.Transfer方法重定向到接收页面,在接收页面用Request.Form["code"]方法得到参数值,该方法可以突破256K的限制,但页面需重定向,隐藏域的值不是很安全。
3、使用Session,Application在页面间传参数,这样传递比较安全,但微软提供这些对象初衷不是用来传递页面参数的。
4、我自己的一种方法,具体思路,先将需要传递的参数组织成键值对存放在XML文件中,在用XMLHTTP将该文件发送到接收页面,在接收页面中解析该xml文件得到参数,这种方法不光光可以可以传递普通参数,还可以将对象系列化成XML文件后传到接收页面,而且整个过程可以做到发送页面不刷新,可以传送大对象,并且可以将传递的参数在接收页面进行处理,再将处理结果返回到发送页面,下面描述一下具体的实现过程:
我需要传送的XML文件如下:
1
<?xml version="1.0"?>2
<root>3
<param key="0" value="value0" />4
<param key="1" value="value1" />5
<param key="2" value="value2" />6
<param key="3" value="value3" />7
<param key="4" value="value4" />8
</root>
1
var xmlhttp=null; 2
if (window.XMLHttpRequest) 3


{ 4
xmlhttp = new XMLHttpRequest(); 5
} 6
if (!xmlhttp&&window.ActiveXObject) 7


{ 8
try 9

{ 10
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP.5.0") 11
} 12
catch(e) 13

{ 14
try 15

{ 16
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP.4.0") 17
} 18
catch(e) 19

{ 20
try 21

{ 22
new ActiveXObject("Msxml2.XMLHTTP") 23
} 24
catch(e) 25

{ 26

try
{new ActiveXObject("Microsoft.XMLHTTP")}27
catch(e)28

{} 29
} 30
} 31
} 32
} 33
function sendParameter()34


{35
var xmldoc = new ActiveXObject("Microsoft.XMLDOM");36
xmldoc.loadXML('<?xml version="1.0"?><root/>');37
for(var i=0;i<5;i++)38

{39
var node = xmldoc.createNode(1,"param","");40
var attribID = xmldoc.createAttribute("key");41
attribID.value = i;42
node.setAttributeNode(attribID);43
var attribIDCode = xmldoc.createAttribute("value");44
attribIDCode.value = "value" + i;45
node.setAttributeNode(attribIDCode);46
xmldoc.documentElement.appendChild(node);47
}48
49
xmlhttp.open("POST","upload.aspx",true);50
xmlhttp.onreadystatechange = rep51
xmlhttp.send(xmldoc);52
}
在接收页读取并解析XML文件
1
protected void Page_Load(object sender, EventArgs e)2

{3
if (!IsPostBack)4

{5
XmlDocument xmlDoc = new XmlDocument();6
xmlDoc.Load(Request.InputStream);7
XmlElement xmlElement = xmlDoc.DocumentElement;8

9
for (int i = 0; i < xmlElement.ChildNodes.Count; i++)10

{11
}12
}13
}
本文介绍了一种在ASP.NET中通过XML文件传递参数的方法,详细解释了如何在发送页面组合XML文件并使用XMLHTTP发送,以及如何在接收页面读取和解析XML文件。
9448

被折叠的 条评论
为什么被折叠?



