![](/img/trans.png)
[英]VB ItemTemplate DataBinder.Eval Container.DataItem in C#
[英]Use of Container.DataItem in an ItemTemplate
我無法讓這個工作,我無法弄清楚為什么。
<ItemTemplate>
<% if (Field(((DataRowView)(Container.DataItem)), "Video File") != "") { %>
<a href='upload/images/<%# Field(((DataRowView)(Container.DataItem)), "Video File")%>'>Download Link</a>
<% } else { %>
<embed height="14" width="661" name="plugin" src="<%# ContentUploadURL%>/<%# Field(((DataRowView)(Container.DataItem)), "Audio File")%>" type="audio/mpeg" autostart="false" />
<% } %>
</ItemTemplate>
看起來很簡單,但我得到這個錯誤:
編譯器錯誤消息:CS0103:當前上下文中不存在名稱“Container”
我整天都在這里,而且我是一個在asp中使用CMS的新手。 我真的不想學習ASP,只是為了讓這一件事有用。
如果有人能指出我正確的方向,我將非常感激。
謝謝!
您不能在數據綁定表達式<%#...%>之外使用Container.DataItem。
我建議你把代碼改成這樣的東西(對不起,但我目前無法測試):
<ItemTemplate>
<asp:HyperLink runat="server"
Visible='<%# Eval("Video File") != "" %>'
NavigateUrl='<%# Eval("Video File")' Text="Download Link" />
<embed runat="server" Visible='<%# Eval("Video File") == "" %>'
height="14" width="661" name="plugin"
src="<%# ContentUploadURL%>/<%# Field(((DataRowView)(Container.DataItem)), "Audio File")%>"
type="audio/mpeg" autostart="false" />
</ItemTemplate>
關鍵是根據數據項的“視頻文件”字段設置兩個控件的Visible屬性。
另見這個問題: ASP.Net條件數據綁定
哦謝謝! 這肯定有幫助。 好的,所以我實際上需要一些更多的html,所以我嘗試了你指向我的占位符技術。
所以,我現在有這個:
<asp:PlaceHolder id="PlaceHolder1" runat="server" Visible='<%# Eval("Video File") != "" %>'>
Video Stuff
</asp:PlaceHolder>
<asp:PlaceHolder id="PlaceHolder2" runat="server" Visible='<%# Eval("Video File") == "" %>'>
Audio Stuff
</asp:PlaceHolder>
它幾乎可以工作,除了視頻文件在兩個實例上都可見,它只應該是第一個。
我也試過這個:
<asp:PlaceHolder id="PlaceHolder1" runat="server" Visible='<%# Eval("Video File") != "" %>'>
Video Stuff
</asp:PlaceHolder>
<asp:PlaceHolder id="PlaceHolder2" runat="server" Visible='<%# Eval("Audio File") != "" %>'>
Audio Stuff
</asp:PlaceHolder>
但這使兩者都顯示出來。 我覺得它幾乎就在那里。
謝謝!
哦,沒關系,我明白了!
這終於奏效了:
<asp:PlaceHolder id="PlaceHolder1" runat="server"
Visible='<%# Field(((DataRowView)(Container.DataItem)), "Video File") != "" %>'>
Video Stuff
</asp:PlaceHolder>
<asp:PlaceHolder id="PlaceHolder2" runat="server"
Visible='<%# Field(((DataRowView)(Container.DataItem)), "Video File") == "" %>'>
Audio Stuff
</asp:PlaceHolder>
太感謝你了 !
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.