asp.net上带有IF的复杂绑定表达式

本文关键字:复杂 绑定 表达式 IF net asp | 更新日期: 2023-09-27 18:24:09

我有一个带有列的中继器,我需要有以下表达式,但不确定语法。

如果value="DispForm.aspx",则显示"无文档"其他的显示实际价值。

我试着在一行中使用所有的表达式,但不确定我在这里缺少了什么

 <a href=" <%# DataBinder.Eval(Container.DataItem, "Path") %>">
                         <%#
                             if (DataBinder.Eval(Container.DataItem, "FileName") == "DispForm.aspx")
                             {
                                 "No document";
                             }
                             else
                             {
                                 DataBinder.Eval(Container.DataItem, "FileName");}%>
                     </a>

错误:

http://screencast.com/t/ZERZjzZxST

asp.net上带有IF的复杂绑定表达式

使用ItemDataBound事件会简单得多,在anchor元素中添加一个id和runat="server",然后可以使用e.Item.FindControl("anchorname")来获取htmlanchor元件。然后,您可以在codeehind中设置它的文本、href、可见性等,这比尝试让一些更困难的数据绑定逻辑有效工作要容易得多。

我自己解决了这个问题:每一行的服务器端都会触发项目数据绑定事件,这个报告返回2000行。这不是一件好事。

   <a href="<%# DataBinder.Eval(Container.DataItem, "fileNameUrl") %>">
                             <%# DataBinder.Eval(Container.DataItem, "FileName").ToString() == "DispForm.aspx" ? "No document" : DataBinder.Eval(Container.DataItem, "FileName").ToString() %>
                         </a>