【问题标题】:Need help with Eval inside DataList需要 DataList 中的 Eval 帮助
【发布时间】:2009-05-12 15:14:30
【问题描述】:

这应该足够简单,我主要将此归咎于我没有使用 DataLists、Repeaters 等的经验。

我有一个 DataList 控件,用于显示购物车中的商品。我使用 Eval("ColumnName") 绑定不同的控件,一切正常,直到我到达价格列。

我的目标是这样渲染它:

项目总成本

$20.00 (每个 5.00 美元)

我正在尝试使用表格单元格内的两个 ASP 标签控件来完成此操作:

<asp:Label ID="lblTotalItemCost" runat="server" Text='<%# Eval("TotalItemCost") %>'>
</asp:Label>
<br />
<asp:Label ID="lblPrice" runat="server" Text='(<%# Eval("Price")%> each)' >
</asp:Label>

不幸的是,它将列渲染为:

项目总成本

$20.00 ( 个)

我尝试了其他几种方法,但它们最终给了我“服务器标签格式不正确”的错误。我很确定这应该很简单,但我现在很难过。

【问题讨论】:

    标签: asp.net data-binding


    【解决方案1】:

    试试这个:

    Text='<%#"(" + Eval("Price").ToString() + " each)"%>'
    

    【讨论】:

    • Option Strict On 禁止运算符“+”的对象类型的操作数。这比我以前的更接近(感谢双引号,我搞砸了)。
    • 我刚刚将 .ToString 添加到 Eval("Price") 中,现在它可以工作了。非常感谢艾哈迈德。
    • 我认为 ToString 是一个方法调用,因此 ToString() 也是如此,因为您正在处理货币金额,您可以添加一个字符串格式,比如 ToString('0.##') 来获取格式。
    • 戴夫你是对的。在 C# 中将其称为 ToString 会导致编译器抱怨。但是,在 VB.NET 中,情况并非如此,使用 ToString 和 ToString() 都是可以接受的,尽管一开始可能会让 C# 开发人员感到困惑。其实这里有一个更完整的答案:stackoverflow.com/questions/390648/…
    • 很好地抓住了那个艾哈迈德(你也是戴夫)。我将再次编辑答案以反映更友好的版本。
    【解决方案2】:

    您是否尝试过使用格式字符串?我知道这在 C# 中有效,尚未在 VB.NET 中测试过

    <asp:Label ID="lblPrice" runat="server" Text='<%# Eval("Price", "({0} each)"%>' />
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-12
      • 2013-10-09
      • 1970-01-01
      • 1970-01-01
      • 2022-01-04
      • 2017-10-05
      相关资源
      最近更新 更多