【c# webform】页面参数传递

ma_ta 2005-03-19 11:43:19
我需要传 '%2004%' 这样的值到另外一个页面(即b.aspx?a1='%2004%'),不知道有没有什么好的方法
关于用网页url传值的方法来传递特殊字符,大家有没有详细点的资料?
...全文
393 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
syeerzy 2005-03-24
  • 打赏
  • 举报
回复
上面的方法可以用来传楼主希望的这种数据,在上个页面中数据是什么样,下个页面就什么样。

例子传的是控件属性,所以用控件了,其实可以不需要控件。
syeerzy 2005-03-24
  • 打赏
  • 举报
回复
介绍一种传值方法:以下全部代码刚才测试过正常工作复制即可
范例:

第一个页面是WebForm2,第2个才是WebForm1,不好意思弄反了。下面是全部代码,已经编译通过。
chuandi(传递)是名字空间

WebForm2:
<%@ Page language="c#" Codebehind="WebForm2.aspx.cs" Inherits="chuandi.WebForm2" %>
<HTML>
<HEAD>
<title>WebForm2</title>
</HEAD>
<body>
<form id="Form1" method="post" runat="server">
<asp:TextBox id="TextBox1" runat="server"></asp:TextBox>
<asp:Button id="Button1" runat="server" Text="传"></asp:Button>
</form>
</body>
</HTML>
using System;
namespace chuandi
{
public class WebForm2 : System.Web.UI.Page
{
protected System.Web.UI.WebControls.TextBox TextBox1;
protected System.Web.UI.WebControls.Button Button1;
public string Text1
{
get
{
return this.TextBox1.Text;
}
}
private void Page_Load(object sender, System.EventArgs e)
{}
override protected void OnInit(EventArgs e)
{
InitializeComponent();
base.OnInit(e);
}
private void InitializeComponent()
{
this.Button1.Click += new System.EventHandler(this.Button1_Click);
this.Load += new System.EventHandler(this.Page_Load);
}
private void Button1_Click(object sender, System.EventArgs e)
{
Server.Transfer("WebForm1.aspx");
}
}
}




WebForm1:
<%@ Page language="c#" Codebehind="WebForm1.aspx.cs" Inherits="chuandi.WebForm1" %>
<%@ Reference Page="WebForm2.aspx" %>
<HTML>
<HEAD>
<title>WebForm1</title>
</HEAD>
<body>
<form id="Form1" method="post" runat="server">
<asp:Label id="Label1" runat="server">Label</asp:Label>
<asp:Button id="Button1" runat="server" Text="返回"></asp:Button>
</form>
</body>
</HTML>
using System;
namespace chuandi
{
public class WebForm1 : System.Web.UI.Page
{
protected System.Web.UI.WebControls.Button Button1;
protected System.Web.UI.WebControls.Label Label1;
public chuandi.WebForm2 wf2;
private void Page_Load(object sender, System.EventArgs e)
{
if(!IsPostBack)
{
wf2=(chuandi.WebForm2)Context.Handler;
Label1.Text="上页传来的是:"+wf2.Text1;
}
}
override protected void OnInit(EventArgs e)
{
InitializeComponent();
base.OnInit(e);
}
private void InitializeComponent()
{
this.Button1.Click += new System.EventHandler(this.Button1_Click);
this.Load += new System.EventHandler(this.Page_Load);
}
private void Button1_Click(object sender, System.EventArgs e)
{
Server.Transfer("WebForm2.aspx");
}
}
}


gaochundu 2005-03-24
  • 打赏
  • 举报
回复
根据 xixigongzhu(夕夕宝贝) 的意思:

A页面:
private void Button1_Click(object sender, System.EventArgs e){
Server.Transfer( "B.aspx?test=" + Server.UrlEncode( "%2004%" ) );
}

B页面:
private void Page_Load(object sender, System.EventArgs e){
this.TextBox1.Text = this.Request["test"].ToString();
}
测试成功。
ballboy628 2005-03-24
  • 打赏
  • 举报
回复
session传就行啦,或者只把2004传过去,再加上别的
ma_ta 2005-03-24
  • 打赏
  • 举报
回复
问题其实是出在取a1值的时候,应该是%2004%,结果我取出来是04%
我跟踪了,在page_load里取Request["a1"]的值还是%2004%
不过同一个地方取convert.tostring(Request["a1"])之后结果就不一样
不信你们试一试
xixigongzhu 2005-03-23
  • 打赏
  • 举报
回复
难道convert.string()这函数有decode功能
------------------------------------------
不可能有这个功能的 肯定是哪个地方处理错了 楼主再仔细跟踪一下
ma_ta 2005-03-23
  • 打赏
  • 举报
回复
不过我是只encode没有decode啊,难道convert.string()这函数有decode功能?不明白
xixigongzhu 2005-03-21
  • 打赏
  • 举报
回复
这也就是为什么%2004%会变成 04%的原因,因为在取的时候系统自动将%20解码到空格了
xixigongzhu 2005-03-21
  • 打赏
  • 举报
回复
因为Server.UrlDecode解码过程是系统自动的,不需要调用的,如果调用就相当于用了两次解码,这样跟先前没用编码是一个意思了
xixigongzhu 2005-03-21
  • 打赏
  • 举报
回复
<a href="test.aspx?key=%252004%25">aaaaaaaaaa</a>中的%252004%25是%2004%经过Server.UrlEncode编码之后的字符串
xixigongzhu 2005-03-21
  • 打赏
  • 举报
回复
其实只需要在传之前用Server.UrlEncode编码一下就可以了:
<%@ Page language="c#"%>
<script language='c#' runat=server>
private void Page_Load(object send, EventArgs e) {
Response.Write(Request["key"]);
}
</script>
<HTML>
<body MS_POSITIONING="GridLayout">
<form id="Form1" method="post" runat="server">
<a href="test.aspx?key=%252004%25">aaaaaaaaaa</a>
</form>
</body>
</HTML>

在取的时候注意不需要Server.UrlDecode解码了
lgsg_01 2005-03-21
  • 打赏
  • 举报
回复
在帮助文档里找那个URL方面的编码就可以了
ma_ta 2005-03-21
  • 打赏
  • 举报
回复
不过我要这样传值的页面比较多一些,用Session的话,感觉有点乱,而且如果有些页面只访问一次的话,不知道对性能有什么影响
Betteronly 2005-03-21
  • 打赏
  • 举报
回复
%20 是空格,url 中這樣表示,
就具體這些該查那些資料偶也不清楚!!

關注ing...
Iceguy 2005-03-21
  • 打赏
  • 举报
回复
其实用Session也是可以传值的。而且一般的字符串类型都可以
ma_ta 2005-03-21
  • 打赏
  • 举报
回复
问题其实是出在取a1值的时候,应该是%2004%,结果我取出来是04%
后来我跟踪了一下,原来取Request["a1"]的值还是%2004%,不过convert.string(Request["a1"])之后结果就不一样了,不知道是为什么

greenery 2005-03-19
  • 打赏
  • 举报
回复
如果你只需要传1~2个参数,建议你使用URL传送http://localhost/test.aspx?p1=abcd&p2=22.5&p3=%20%30....

如果你好使用一下方式获取上一个页面的全部信息
youform 中将需要提供给其他页面使用的控件或其他信息定义为只读属性供其他页面访问

YouForm1 youform = (SetSearchCondition)Context.Handler;
SearchCondition c = youform .Condition;
LoveCherry 2005-03-19
  • 打赏
  • 举报
回复
url编码一下就好了
csdn5201 2005-03-19
  • 打赏
  • 举报
回复
用Server.UrlEncode()加密一下,然后用Server.UrlDecode解密。就行了
Tomgus 2005-03-19
  • 打赏
  • 举报
回复
可以用base64 处理
加载更多回复(1)

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧