在c#的aspx页面上怎么取得传值

dobly 2004-03-16 10:22:55
用request不行,我不知为什么
...全文
249 点赞 收藏 10
写回复
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
dobly 2004-03-17
怎么会是这个错误?


有 assignment、call、increment、decrement 和 new 对象表达式可用作语句

源错误:



行 38: </tr>
行 39: <tr><td bgcolor=#E4E8FC align="center">
行 40: <a href=admin_article_add.aspx?class=<% Request.Params["class"]; %>>添加文章</a>
行 41: </td></tr>
行 42: </table>

回复
雪狼1234567 2004-03-17
如下讲得很清楚啦,有空应先看帮助:
在很多时候,您将需要从一页定位到另一页,将值从一页传递到另一页。例如,可能有一页会提示用户提供名称和密码。当用户提交窗体时,您需要调用另一页对用户进行身份验证。

在页之间共享信息的方法有多种:

使用查询字符串,它将信息追加到 URL 并将该 URL 传递到下一页。这种方法存在使信息可见的缺点。有关详细信息,请参阅 WebClient.QueryString 属性和 HttpRequest.QueryString 属性。
使用会话状态存储信息,使用户当前会话中的所有页都可以全局访问这些信息。但是,这种方法会占用服务器内存,并且信息仅在会话过期之前存储,从而比向下一页传递信息具有更多的系统开销。有关详细信息,请参阅 Web 窗体状态管理。
使用自定义页属性,然后从初始页重定向到目标页,此时仍可以读取旧页上的值。此策略在本主题中描述。
Web 窗体页是应用程序中的类,因此可以向处理任何类一样为它们创建属性。但是,由于 Web 窗体页实际上仅在执行页的过程中存在,它们的生命周期非常短。因此,Web 窗体页上属性的用途相当有限,因为它们仅在处理页的过程中存在。但是,如果使用特定的技术将控件从一页传递到另一页,后一页仍可以访问前一页上的属性。

在源页上创建可共享的值

在代码中,使用属性的标准语法声明页上的一项或多项只读属性。返回要向下一页传递的属性值。
以下示例显示如何声明名为 Property1 的属性并将它的值设置为该页上文本框的值:

' Visual Basic
Public ReadOnly Property Property1() As String
Get
Return TextBox1.Text
End Get
End Property

// C#
public string Property1
{
get
{
return TextBox1.Text;
}
}
通过调用 Server 对象(HttpServerUtility 类)的 Transfer 方法调用下一页,并向其传递要将信息传递到的页的 URL。
以下示例显示如何从事件处理程序中调用名为 WebForm2 的页(在同一项目中):

' Visual Basic
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Server.Transfer("Webform2.aspx")
End Sub

// C#
private void Button1_Click(object sender, System.EventArgs e)
{
Server.Transfer("Webform2.aspx");
}
若要从所调用的页中获取第一页的属性值,请创建源页类的实例变量。然后可以向其分配 HTTP 对象(IHttpHandler 类的一个实例),即接收初始请求的对象。

在所调用的页中读取源页中的属性值

创建一个全局实例变量,它被类型化为源页的类。
以下示例显示如何声明其类名称为 WebForm1 的页所表示的类型的变量:

' Visual Basic
Public sourcepage as WebForm1

// C#
public WebForm1 sourcepage;
在 Page_Load 处理程序中,从 Context.Handler 对象(IHttpHandler 接口)中获取源页,然后向其分配在第 1 步创建的变量。必须将该处理程序对象转换为源页类的类型。
注意 只应在该页首次运行(即首次从源页中调用该页)时执行此逻辑。
从源页中获取属性值,并按照使用任何对象属性的方式来使用这些属性值。
注意 如果要在除第一页初始化阶段之外的任何页处理阶段中使用属性值,则务必要保存这些属性值(例如以视图状态保存)。有关详细信息,请参阅 Web 窗体状态管理介绍。
完整的 Page_Load 处理程序可能类似于如下所示:

' Visual Basic
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
If Not Page.IsPostBack Then
sourcepage = CType(Context.Handler, WebForm1)
Label1.Text = sourcepage.Property1
End If
End Sub

// C#
private void Page_Load(object sender, System.EventArgs e)
{
if (!IsPostBack){
WebForm1 sourcepage = (WebForm1) Context.Handler;
Label1.Text = sourcepage.Property1;
}
}
回复
nedvedlh 2004-03-17
Request.QueryString["***"];
回复
xj1122 2004-03-17
关于页面怎么取值:

http://search.csdn.net/expert/topic/52/5202/2002/5/22/743525.htm

页面之间传递值

方式1:

在接收页 的html代码里加上一行: <%@ Reference Page = "WebForm1.aspx" %>

WebForm1 fp=(WebForm1)Context.Handler;
this.TextBox1.Text=fp.name; //name 是第一页的public变量


Context 提供对整个当前上下文(包括请求对象)的访问。您可以使用此类共享页之间的信息。

方式2:GET方式
在发送页
public int sum=0;

int i =int.Parse(this.TextBox1.Text)*2;

Server.Transfer("WebForm2.aspx?sum="+i);

接收页
this.TextBox1.Text=Request["sum"].ToString();
or this.TextBox1.Text=Request.Params["sum"].ToString();
this.TextBox1.Text=Request.QueryString["sum"];


方法3:全局变量

发送页:
Application["sum"]=this.TextBox1.Text;
Server.Transfer("WebForm2.aspx");

接收页:
this.TextBox1.Text=(string)Application["sum"];

Application实质上是整个虚拟目录中所有文件的集合,如果想在整个应用范围内使用某个变量值,Application对象将是最佳的选择

在这里用Session[""]的方法雷同

方法4:

发送页:
1.定义静态变量: public static string str="";
2. str=this.TextBox1.Text;
Server.Transfer("webform2.aspx");
接收页:
1.引入第一页的命名空间:using WebApplication1;
2 this.TextBox1.Text=WebForm1.str;

(以上是转贴)
回复
xj1122 2004-03-17
在framework的默认情况下aspcompat=false 就是说

=<% Request.Params["class"]; %>> 非法代码

try:

1:把代码写到后台
2:在你的aspx页面顶部加上:
<%@ Page Language="c#" AutoEventWireup="false" Codebehind="dataDetails.aspx.vb" Inherits="caalisc.dataDetails" aspCompat="True"%>
回复
DigitalRabbit 2004-03-16
你也可以用Session,如Session["name"] = "lmy",然后在另一页中string Name = Session["Name"]将它读出。
回复
DigitalRabbit 2004-03-16
Response.Redirect("CookieWrite.aspx?tid=lmy");
问号前的部分是你要跳转到的页面,问号后的部分是传的值比如我传的是"lmy"这几个字符。
然后在CookieWrite.aspx页面中用Request.QueryString["tid"]将其读出。
回复
flyingbirddhp 2004-03-16
hehe
回复
孟子E章 2004-03-16
Request.Params["ok"];
回复
孟子E章 2004-03-16
Request.QueryString["ok"];
回复
发动态
发帖子
C#
创建于2007-09-28

10.4w+

社区成员

.NET技术 C#
申请成为版主
社区公告

全世界最好的语言,没有之一.