ASP.Net:ListView的ItemTemplate中的条件逻辑

我想根据绑定字段是否为空来显示ItemTemplate的某些部分。 以下面的代码为例:

(为简洁起见,删除了LayoutTemplate等代码)

      <a href="https://stackoverflow.com/questions/1083829/asp-net-conditional-logic-in-a-listviews-itemtemplate/">Link      

以上给出了以下运行时错误:

数据绑定方法(如Eval(),XPath()和Bind())只能在数据绑定控件的上下文中使用。

那么怎样才能在ItemTemplate一些条件逻辑(如上所述)?

将控件的“可见”属性绑定到您的状态怎么样? 就像是:

     Link     

解决“服务器标签格式不正确”。 对于涉及可见性的答案,请从Visible =参数中删除引号。

所以它将成为:

 > 

我不建议这是一个好的方法,但你可以通过捕获OnItemDataBound事件中的当前项,将其存储在公共属性或字段中然后在条件逻辑中使用它来解决此问题。

例如:

    <% if (CurrentItem.DownloadLink != null) { %>  Link  <% } %>    

并在服务器端将以下代码添加到您的代码隐藏文件:

 public MusicItem CurrentItem { get; private set;} protected void Item_DataBound(object sender, RepeaterItemEventArgs e) { CurrentItem = (MusicItem) e.Item.DataItem; } 

请注意,此技巧在UpdatePanel控件中不起作用。

如果您有2种不同的结构要根据条件进行渲染,则使用面板

      Album Description BlaBlaBla      Album Description BlaBlaBla  Download .....