【问题标题】:Why can I not use Eval() in an if condition inside a ListView?为什么我不能在 ListView 内的 if 条件下使用 Eval()?
【发布时间】:2013-08-12 15:32:41
【问题描述】:

通过这样的设置:

<asp:ListView runat="server" ID="lvArticles">
    <LayoutTemplate>
        <div runat="server" id="itemPlaceholder" />
    </LayoutTemplate>
    <ItemTemplate>
        <% if (Eval("Document") != null) { %>
            <a href="/Documents/" + <%# Eval("Document.Id") %> + ".pdf">
                <%# Eval("Document.Name") %>
            </a>
        <% } %>
    </ItemTemplate>
</asp:ListView>

我收到以下错误:

Databinding methods such as Eval(), XPath(), and Bind() can only be used in the context of a databound control.

为什么在这样的条件下不允许使用像 Eval() 这样的数据绑定方法? ListView 不是数据绑定控件吗?

【问题讨论】:

  • 你看过这篇文章吗? stackoverflow.com/questions/2571545/…
  • @BenStrombeck 我有,它显示了替代方法,但没有回答问题。有好几个。
  • 一开始你为什么要搞这个烂摊子?这应该是真正的问题!
  • @banging 因为我已经厌倦了必须使用控件和代码来完成不应该需要它们的任务,以及随之而来的大量事件。我会切换到 MVC,但是对于我正在处理的项目来说,现在要解决的问题有点太多了。在我看来,有一个 PlaceHolder 或 Panel 可以切换 Visible,然后不得不检查 Eval 中的空值,嗯,感觉比这个烂摊子还要糟糕。

标签: c# asp.net


【解决方案1】:

因为&lt;%# Eval("value") %&gt; 中的# 告诉服务器进行数据绑定。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-22
    • 2019-01-14
    • 2018-07-15
    • 1970-01-01
    相关资源
    最近更新 更多