asp.net
  • session-variables
  • hyperlink
  • 2010-08-03 84 views 1 likes 
    1

    我確定我以前做過這件事,但不記得語法。如何在超鏈接中包含nagivateUrl中的會話變量?如何在NavigateUrl中的超鏈接中包含會話變量

    我已經試過這樣:

    <asp:HyperLink ID="lnkMyLink" runat="server" Text="My Link" 
    NavigateUrl='<%# "http://absoluteURL.org?param=" + 
    Session["myParameterValue"].ToString()%>'></asp:HyperLink> 
    

    這:

    <asp:HyperLink ID="lnkMyLink" runat="server" Text="My Link" 
    NavigateUrl='<%# String.Format("http://absoluteURL.org?param={0}", 
    Session["myParameterValue"].ToString()) %>'></asp:HyperLink> 
    
    +0

    感謝您的編輯,羅布。你是如何糾正格式的?我在該塊上嘗試了Ctrl-K。 – Zesty 2010-08-03 06:34:06

    +1

    Ctrl-K只是視覺工作室,我害怕=)我只是剁碎它,直到它看起來正確=) – Rob 2010-08-03 06:36:57

    回答

    1

    由於您已使用數據綁定格式(<%#),因此您需要從代碼隱藏中調用超鏈接.DataBind()方法。

    你需要你的Page_Load方法看起來是這樣的:

    protected void Page_Load(object sender, EventArgs e) 
    { 
        lnkMyLink.DataBind(); 
    } 
    

    唯一記住,使用數據綁定這樣的事情,要承擔即沒有具體數據綁定,可能有點令人困惑的任何未來需要維護你的代碼的人。雖然確定你做了什麼以及爲什麼你已經完成了任務,但任何可能導致未來混淆的事情都應該在可行的情況下從代碼中刪除。因此,一個潛在更好的選擇將是在您的Page_LoadPage_Load

    lnkMyLink.NavigateUrl = 
        string.Format("http://absoluteURL.org?param={0}", Session["myParameterValue"]); 
    
    +0

    謝謝,羅布。這是一個更好的解決方案。 – Zesty 2010-08-03 06:38:18

    1

    如果你的鏈接是不是在數據綁定控件,如一個ListView,你仍然可以強制綁定(根據你的第一個代碼片斷),通過調用代碼隱藏控件上的.DataBind()。

    +0

    謝謝,kbrimington,我忘了檢查:)我會標記爲10分鐘後的答案,因爲它不會讓我馬上標記它。 – Zesty 2010-08-03 06:31:44

    相關問題