2012-12-18 72 views
-1

我想一個條件語句添加到我的中繼器,但我收到以下錯誤條件語句:使用XPath裏面直放站

  • 數據綁定方法如的eval(),XPath的(),和綁定()只能用於數據綁定控件的上下文中。

我想使用的代碼如下:

<asp:Repeater ID="repLeftmenu" DataSourceID="xmlMenu" runat="server" EnableViewState="false"> 
    <HeaderTemplate> 
    <ul class="leftMenu"> 
    </HeaderTemplate> 
    <ItemTemplate> 
    <li> 
     <% If XPath("@url").ToString = HttpContext.Current.Request.Url.AbsolutePath.ToString Then%> 
     <a href="<%# XPath("@url") %>"> 
      <%# XPath("@title")%> 
     </a> 
     <% Else %> 
     <a href="<%# XPath("@url") %>"> 
      <%# XPath("@title")%> 
     </a>    
     <% End If%> 
    </li> 
</ItemTemplate> 
<FooterTemplate> 
    </ul> 
</FooterTemplate> 
</asp:Repeater>  

是不是有什麼毛病我的語法?

感謝, crjunk

+0

看你的代碼,我看到了一個if/else結構,但我看到包含的代碼之間沒有區別在'If Then ... Else'和'Else ... End If'中的代碼。你確定你需要if/else結構嗎? –

回答

0

您正在使用數據綁定expresions在常規代碼塊,這是不支持的。數據綁定表達式應出現在<%# ... %>塊內。常規代碼塊如下所示:<% ... %>。 (唯一的區別是塊的開頭的#。)

如果您需要數據綁定塊內的條件,則需要使用表達式(簡稱:單線程)。做到這一點的唯一方法是使用下面的代碼:

<%# If(XPath("Url").ToString = HttpContext.Current.Request.Url.AbsolutePath.ToString, "Display this when true", "Display this when false") %> 

這很快就會變得笨重時有條件地顯示HTML的整個街區。你可以做的,然後是創建兩個塊,並設置每個基於條件表達式的知名度:

<span runat="server" visible='<%# XPath("Url").ToString = <%# If(XPath("Url").ToString = HttpContext.Current.Request.Url.AbsolutePath.ToString %>'> 

    HTML that should be displayed when condition is true 

</span> 
<span runat="server" visible='<%# XPath("Url").ToString <> <%# If(XPath("Url").ToString = HttpContext.Current.Request.Url.AbsolutePath.ToString %>'> 

    HTML that should be displayed when condition is false 

</span>