如何将字符串从一个aspx.cs页面带到另一个页面?

时间:2009-01-27 14:47:05

标签: c# .net asp.net

我想在一个aspx.cs文件中使用一个字符串,而不是另一个。我知道这很容易,但我该怎么做呢?

9 个答案:

答案 0 :(得分:11)

您可以在查询字符串中执行此操作。在您的第一页:

Response.Redirect("Second.aspx?book=codecomplete");

并在第二页

string book = Request["book"];

此方法允许您的用户查看您要传递到第二页的内容。或者,您可以将其放在会话对象中。放置它:

Session["book"] = "codecomplete";

并将其恢复使用:

string book = Session["book"] as string;

作为第三种选择,您可以使用Server.Transfer。如果要转到服务器端的第二页,请使用此方法。但请注意,您的用户将继续在地址栏上看到第一页的网址。

第1页:

this.SomeProperty = "codecomplete";
Server.Transfer("SecondPage.aspx");

第2页:

string book = (PreviousPage as Page1).SomeProperty;

答案 1 :(得分:2)

您可以使用查询字符串发送它,也可以定义会话变量来存储它。

最佳选择取决于您要使用该字符串的内容。

答案 2 :(得分:1)

查询字符串

Response.Redirect(page.aspx?val=whatever);

然后在page.aspx

string myval = Request["whatever"]

OR

Server.Transfer("page.aspx", true);

如果您不希望将页面切换为透明,则会从第一页继续表单值

答案 3 :(得分:0)

另一种选择是跨页回发。

http://msdn.microsoft.com/en-us/library/ms178139.aspx

答案 4 :(得分:0)

我强烈建议您仅在绝对必要的情况下使用会话,这需要宝贵的服务器资源。

使用QueryString,使用起来非常简单,只需添加一个“?”在aspx之后写下你要传递的值,例如:

page.aspx?VAL = this_is_a_value_passed_to_this_page。

在page.aspx中,您读取如下的查询字符串值: string val = Request.QueryString [“val”]; 回复于(VAL);

这将产生以下响应: this_is_a_value_passed_to_this_page

这里可以找到更复杂的解释: http://aspnet.4guysfromrolla.com/articles/020205-1.aspx

答案 5 :(得分:0)

使用QueryString参数或会话变量。

请记住接收页面,在检查Request或Session对象时,在尝试使用它来避免意外错误之前,应确保该值不为null。

if (Session["VariableName"] != null) {
  string varName = Session["VariableName"].ToString();
  // use varName
}

或者

string varName = (Session["VariableName"] ?? "").ToString();

同样,如果要传递数值,请确保在转换或转换并使用它之前它是正确的数据类型。

if (Session["IDValue"] != null) {
  string idVlaueString= Session["IDValue"].ToString();
  int idValue = 0;
  bool isInt = int.TryParse(idValueString, out idValue);
  if (isInt) {
    // use idValue
  }
}

答案 6 :(得分:0)

如果你只希望变量在那个调用另一个页面的内容中持续,我建议使用Context。

在第一页中使用:

Context.Items.Add("varName", varData);

然后在被叫页面上使用:

Context.Items("varName")

阅读本文以获取更多信息:http://steveorr.net/articles/PassData.aspx

答案 7 :(得分:0)

查看一篇名为"Passing Data the .NET way"的联盟文章,该文章展示了如何实现这一目标。此解决方案的最佳部分是它不使用用户可以看到的任何查询字符串变量,也不需要将其置于会话状态。

缺点是:

在第一页(Default.aspx)上创建一个隐藏文本框(txtMessage):

<asp:TextBox ID="txtMessage" runat="server" Visible="False" Text="" />

然后在后面的代码中添加一个方法:

Public ReadOnly Property MessageForwarded() As String
    Get
        Return txtMessage.Text
    End Get
End Property

最后,您可以动态设置隐藏文本框的值

txtMessage.text = "Hello there"

在第二页上添加一个参考:

<%@ Reference Page="Default.aspx" %>

然后使用以下语法从第一页加载数据:

Dim objSource As Source = CType(Context.Handler, Source)
If Not (objSource Is Nothing) Then
    Response.Write(objSource.MessageForwarded)
End If

我已经使用了一段时间没有任何问题。

答案 8 :(得分:0)

查询字符串是传递字符串值的好方法。 检查此解决方案并尝试

response.redirect("link to your redirect page.aspx?userName="+string+"");

此处userName是您希望在另一页中获取的字符串的名称。

字符串是您传递到下一页的字符串。

然后使用

返回该字符串
string str = Request.QueryString["userName"];

这是获取字符串值的方法。