繁体   English   中英

在ItemTemplate中使用Container.DataItem

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM