如何使用 ASP.NET Eval 而不是 ModelBinding 来显示 Item Total?

How to show the Item Total using ASP.NET Eval instead of ModelBinding?

我是新的 ASP.NET Web 表单开发人员,我正在使用 ASP.NET 4.5。我现在正在努力将使用 ModelBinding 的语句转换为 Eval,因为我正在使用 ObjectDataSource。

ASP.NET行代码:

<asp:TemplateField HeaderText="Item Total">
    <ItemTemplate>
        <%#: String.Format("{0:c}", ((Convert.ToDouble(Item.Quantity)) *  Convert.ToDouble(Item.Product.UnitPrice)))%>
    </ItemTemplate>
</asp:TemplateField>

我不想使用 ModelBinding 和 Item.Quantity 或 Item.Product.UnitPrice,而是使用 Eval 语句,因为这行代码包含在绑定到 ObjectDatasSource 的 ASP.NET GridView 中。那我该怎么做呢?

我试过如下:

<asp:TemplateField HeaderText="Item Total">
    <ItemTemplate>
<%# String.Format("{0:C}", Double.Parse(DataBinder.Eval(Container.DataItem, "Quantity").ToString()))  %>
 *  
<%# String.Format("{0:C}", Double.Parse(DataBinder.Eval(Container.DataItem, "TTSF_Product.UnitPrice").ToString()))  %>
    </ItemTemplate>
</asp:TemplateField>

但不幸的是它给了我以下结果:

.00 * .50

而不是进行数学计算,我不知道为什么。 那么我该如何修复那行代码呢?

在此先感谢您的帮助。

您正在尝试对此处的两个字符串值进行数学运算:

<%# String.Format("{0:C}", Double.Parse(DataBinder.Eval(Container.DataItem, "Quantity").ToString()))  %>
 *  
<%# String.Format("{0:C}", Double.Parse(DataBinder.Eval(Container.DataItem, "TTSF_Product.UnitPrice").ToString()))  %>

尝试这样的事情:

<%# String.Format("{0:C}", (Double.Parse(DataBinder.Eval(Container.DataItem, "TTSF_Product.UnitPrice") * Double.Parse(DataBinder.Eval(Container.DataItem, "Quantity")).ToString()))  %>

这对我来说非常有用..

<%# String.Format("{0:C}", Double.Parse(DataBinder.Eval(Container.DataItem, "Quantity").ToString()) * Double.Parse(DataBinder.Eval(Container.DataItem, "TTSF_Product.UnitPrice").ToString())) %>