0

マークアップでセッション変数の値を使用したい。これは UserContorl.ascx に記述されたコード、NavigateUrl 上のファイル セッション変数に格納されている Username を送信したい。何らかの理由で PageLoad 関数に NavigateUrl 値を設定したくありません。

コードで次のエラーが表示されることに注意してください: サーバー タグが正しく形成されていません。

<asp:Panel ID="pnlMenuItems" runat="server" HorizontalAlign="Left">
        <asp:HyperLink ID="LinkLogout" runat="server" NavigateUrl="~/logout/"+
            <%= HttpContext.Current.Session["UserName"].ToString(); %>> CssClass="pnlMenuItems"
            ForeColor="#666666">Logout</asp:HyperLink>
</asp:Panel>
4

2 に答える 2

1

サーバータグ内でデータをバインドできます。例えば

<asp:HyperLink ID="LinkLogout" runat="server"
    NavigateUrl="<%# LogoutUrl %>"
    CssClass="pnlMenuItems"
    ForeColor="#666666">Logout</asp:HyperLink>

次に、コードビハインドで:

protected string LogoutUrl { 
    get { 
        return "~/logout/" + HttpContext.Current.Session["UserName"].ToString(); 
    }
}

protected void Page_Load(object sender, EventArgs e) {
    if(!IsPostBack) { DataBind(); }
}

NavigateUrl は、DataBind()このメソッドを使用するための呼び出し中に設定されます。私の例では、ページの読み込み中に値が設定されますが、特に設定する必要はありません。ページのライフサイクル中の別の時点で発生させる必要がある場合はDataBind()、別のイベント中に呼び出しを試すことができます。

于 2013-08-02T23:02:15.507 に答える
0

どうですか:

<asp:Panel ID="pnlMenuItems" runat="server" HorizontalAlign="Left">
        <asp:HyperLink ID="LinkLogout" runat="server"
            NavigateUrl="<%# "~/logout/" + HttpContext.Current.Session["UserName"].ToString() %>"
            CssClass="pnlMenuItems"
            ForeColor="#666666">Logout</asp:HyperLink>
</asp:Panel>
于 2013-08-02T22:45:45.203 に答える