2011-06-25 19 views
0

ユーザーがページをナビゲートする際にintを渡したいと思います。ハイパーリンクとページ間での変数の受け渡し

私はこれを持っている:

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

は、私が他のページに番号5を通過したいと仮定します。それ、どうやったら出来るの?

答えて

4
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 
    } 
} 

あなたは、このような動作を確保することができます。最初のページにハイパーリンクの代わりにLinkBut​​tonコントロールを使用します。

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

とし、その後第二に:PreviousPageプロパティが強く型付けされ

<%@ PreviousPageType VirtualPath="~/Default.aspx" %> 

if (this.PreviousPage != null && this.PreviousPage.IsValid) 
{ 
    // do the same 
} 

注こと、すなわちデフォルトの種類だけではなくページ

+0

あなたはそれをURLに入れました。私はそれを行うことができることを忘れていました! – Matrix001

+0

@ Matrix001:さらに便利なコードを追加しました – abatishchev

0

あなたができることですSession variablesを使用して1ページに値を設定してください:

class Default : Page 
{ 
    // ...other code 

    Session["myValue"] = "5"; 
} 

nの受信機のページにそれを拾う:

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

    // do something with x 
} 

良いことについてSessionの変数を使用すると、任意のデータ型/オブジェクトを使用できることであり、それはURLで、すなわち見えない​​、ユーザーから隠されています。

関連する問題