0

我正在用 asp.net 和 c# 开发一个小型购物车网站。我的问题是在结帐页面中,我想通过计算加税来显示每种产品的总价格。我有一个数据列表,其中有一个 ItemTemplate 作为总标签,我想在其中绑定函数调用 CalculateTotal(price, tax)。在数据库中,price 有 Varchar(MAX),tax 有 float 数据类型。当我尝试时,出现以下错误:

Server Error in '/' Application.

编译错误

说明:在编译服务此请求所需的资源期间发生错误。请查看以下特定错误详细信息并适当修改您的源代码。

编译器错误消息:CS1502:“ProgearHire.Hire.CalculateTotal(string, string)”的最佳重载方法匹配有一些无效参数

源错误:

第 232 行: 第 233 行: 第 234 行: ' runat="server" /> 第 235 行: 第 236 行:

我使用的代码如下:

        <td align="center">
        <asp:Label ID="lbTotal" runat="server" Text=""></asp:Label>
        <asp:Label Visible="false" ID="Label9" Value='<%#(CalculateTotal(Eval("Price"), Eval("Tax"))) %>' runat="server" />
    </td>

功能:

  public float CalculateTotal(string x, string y)
    {
        p = Convert.ToInt32(x);
        q = Convert.ToInt32(y);
        return (float)p * (float)q;
    }

任何人都可以帮我找出问题所在。提前致谢。

4

5 回答 5

1

亲爱的朋友,您的代码运行良好,但标签控件没有值属性,您必须将标签设置为文本属性,因此使您的代码如下所示

     <td align="center">
    <asp:Label ID="lbTotal" runat="server" Text=""></asp:Label>
    <asp:Label Visible="false" ID="Label9" Text='<%#(CalculateTotal(Eval("Price"), Eval("Tax"))) %>' runat="server" />
</td>
于 2013-05-08T05:19:13.663 回答
0

您的方法CalculateTotal(string x, string y)需要两个string参数,但您在方法返回时提供objects 。更正如下:Eval()object

... Value='<%# CalculateTotal(Eval("Price") as string, Eval("Tax") as string) %>'
于 2013-05-08T04:59:52.430 回答
0

我建议将每个参数转换为字符串,Eval 返回对象。如下:

<asp:Label Visible="false" ID="Label9" Value='<%#(CalculateTotal((string)Eval("Price"), (string)Eval("Tax"))) %>' runat="server" />
于 2013-05-08T05:03:55.803 回答
0

您为标签提供了错误的属性。它将是“文本”而不​​是“值”

<asp:Label Visible="false" ID="Label9" Value='<%#(CalculateTotal(Eval("Price"), Eval("Tax"))) %>' runat="server" />

换成这个

<asp:Label Visible="false" ID="Label9" Text='<%# CalculateTotal(Convert.ToString(Eval("Price")), Convert.ToString(Eval("Tax"))) %>' runat="server" />

你的错误会解决。此外,在Calculate 函数中,您已将字符串转换为int 并以float 形式返回。这也是错误的,因为税收可能是十进制格式。请检查那个东西

如下更改您的功能。

public Double CalculateTotal(string x, string y)
        {
            Double p = Convert.ToDouble(x);
            Double q = Convert.ToDouble(y);
            return (p * q);
        }
于 2013-05-08T05:05:59.283 回答
-1

代码看起来很棒..

<asp:Label Visible="false" ID="Label9" Text='<%# CalculateTotal(Convert.ToString(Eval("Price")), Convert.ToString(Eval("Tax"))) %>' runat="server" />

试试这样的功能..

public Double CalculateTotal(object x, object y)
        {
            Double p = Convert.ToDouble(x);
            Double q = Convert.ToDouble(y);
            return (p * q);
        }

它对我有用。快乐编码。

于 2015-07-11T23:20:41.520 回答