超链接和跨页面传递变量
本文关键字:变量 超链接 | 更新日期: 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中不可见。