我无法让这个工作,我无法弄清楚为什么。
<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: 名称'容器'不存在于 当前背景
我整天都在这里,而且我是一名在asp上使用CMS的新手。我真的不想学习ASP,只是为了让这一件事有用。
如果有人能指出我正确的方向,我将非常感激。
谢谢!
答案 0 :(得分:12)
您不能在数据绑定表达式&lt;%#...%&gt;之外使用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 conditional databinding
答案 1 :(得分:1)
哦,谢谢!这肯定有帮助。好的,所以我实际上需要一些更多的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>
但这使得两者都显示出来。我觉得它几乎就在那里。
谢谢!
答案 2 :(得分:0)
哦,没关系,我明白了!
这终于奏效了:
<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>
非常感谢 SO !