2013-08-02 2 views
0

마크 업에서 세션 변수의 값을 사용하고 싶습니다. 이것은 NavigateUrl의 UserContorl.ascx 파일에 작성된 코드입니다. 세션 변수에 저장되어있는 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> 

답변

1

당신은 서버 태그 내에서 데이터를 바인딩 할 수 있습니다에 대해 어떻게

Note the code gives the error: The server tag is not well formed.

<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> 
0

. 예 : 뒤에 코드에서 다음

<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()을 호출 해 볼 수 있습니다.

+0

오류 : 서버 태그에 <% ... %> 구조를 포함 할 수 없습니다. 복용량이 효과가 없습니다. –

관련 문제