我正在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;
}
任何人都可以帮我找出问题所在。提前谢谢。
答案 0 :(得分: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>
答案 1 :(得分:0)
您的方法CalculateTotal(string x, string y)
需要两个string
个参数,但是当object
方法返回Eval()
时,您正在提供object
个参数。纠正如下:
... Value='<%# CalculateTotal(Eval("Price") as string, Eval("Tax") as string) %>'
答案 2 :(得分:0)
我建议将每个参数转换为字符串,Eval返回对象。如下:
<asp:Label Visible="false" ID="Label9" Value='<%#(CalculateTotal((string)Eval("Price"), (string)Eval("Tax"))) %>' runat="server" />
答案 3 :(得分: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);
}
答案 4 :(得分:-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);
}
这对我有用。快乐的编码。