我想創建一個簡單的菜單系統使用中繼器。在系統中,我想爲類子項使用不同的格式,並試圖使用If檢查DataBinder結果和分支,如果它的「類」,但當我編譯代碼時說:爲什麼不會DataBinder.Eval工作
名稱「容器」未宣佈。
在所有的在線教程和MSDN上,Container.DataItem只是假設工作,所以我找不到任何有關它不工作的信息。任何使用數據綁定器的人都可以解釋這一點嗎?
<asp:Repeater ID="TopNavRepeat" runat="server" DataSourceID="SqlDataSource1" >
<HeaderTemplate>
<ul id="nav">
</HeaderTemplate>
<ItemTemplate>
<li>
<asp:HiddenField ID="LinkIdField1" Value='<%# Eval("id") %>' runat="server"
OnDataBinding="LinkIdField_ValueChanged" OnValueChanged="LinkIdField_ValueChanged"/>
<asp:HyperLink ID="HyperLink1" runat="server" Text='<%# Eval("Title") %>' NavigateUrl='<%# Eval("Url") %>'
ToolTip='<%# Eval("Description") %>'>
</asp:HyperLink>
<ul>
<!-- -->
<% If (CStr(DataBinder.Eval(Container.DataItem, "Title")) = "Classes")THEN %>
<asp:Repeater ID="ClassDownList" runat="server" DataSourceID="ClassDS">
<HeaderTemplate></HeaderTemplate>
<ItemTemplate>
<li><asp:HyperLink ID="HyperLink1" runat="server" Text='<%# Eval("name") %>' NavigateUrl='<%# "/Class/" & helpers.urlSafe(CStr(Eval("name"))) %>'
ToolTip='<%# CStr(Eval("name")) & " home page" %>' /></li>
</ItemTemplate>
<FooterTemplate></FooterTemplate>
</asp:Repeater>
<% Else %>
<asp:Repeater ID="DropDownList" runat="server" OnLoad="ChildDataList_Init">
<HeaderTemplate></HeaderTemplate>
<ItemTemplate>
<li><asp:HyperLink ID="HyperLink1" runat="server" Text='<%# Eval("Title") %>' NavigateUrl='<%# Eval("Url") %>'
ToolTip='<%# Eval("Description") %>' /></li>
</ItemTemplate>
<FooterTemplate></FooterTemplate>
</asp:Repeater>
<%End If %>
</ul>
</li>
</ItemTemplate>
<FooterTemplate>
</ul>
</FooterTemplate>
</asp:Repeater>
'Container.DataItem'應該在'<%# ... %>'塊中使用。 – Heinzi 2010-10-01 16:19:38
當您使用<%#時,會導致編譯錯誤:預期表達式。 – 2010-10-01 17:48:33