超链接和跨页面传递变量

本文关键字:变量 超链接 | 更新日期: 2023-09-27 18:00:27

我想在用户浏览页面时传递一个int。

我有这个:

Hyperlink q = new HyperLink();
q.Text = ThreadName;
q.NavigateUrl = "AnswerQuestion.aspx";

假设我想把数字5传给另一页。我该怎么做?

超链接和跨页面传递变量

class Default : Page
{
    q.NavigateUrl = "AnswerQuestion.aspx?x=5";
}
class AnswerQuestion : Page
{
    protected override void OnPreInit(EventArgs e)
    {
        base.OnPreInit(e);
        string x = this.Request.QueryString["x"];
        int i;
        if (!Int32.TryParse(x, out i))
            throw new Exception("Can't parse x as int");
        // then use i
    }
}

你可以确保这样的操作。在第一页使用LinkButton而不是HyperLink:

<asp:LinkButton runat="server" PostBackUrl="~/Question.aspx?x=5">Question #5</asp:LinkButton>

然后在第二个:

<%@ PreviousPageType VirtualPath="~/Default.aspx" %>
if (this.PreviousPage != null && this.PreviousPage.IsValid)
{
    // do the same
}

请注意,PreviousPage属性是强类型的,即类型为Default而不仅仅是Page

您还可以使用会话变量在一个页面上设置一个值:

class Default : Page
{
    // ...other code
    Session["myValue"] = "5";
}

然后用在接收器页面上拾取

class TargetPage : Page
{
    // other code...
    int x; 
    try {
        x = int.Parse(Session["myValue"]);
    } catch {}
    // do something with x
}

Session变量的好处在于,您可以使用任何数据类型/对象,并且它对用户是隐藏的,即在URL中不可见。