<;%#-新手奇怪的错误

本文关键字:错误 新手 lt | 更新日期: 2023-09-27 18:26:59

我正在使用TemplateField向绑定到数据库中的表的网格视图添加一个额外的"计算"列。我遇到了这个奇怪的错误,我不知道如何开始调试它。我可能用<%#语法做了一些错误/不可行的事情,如果是这样,请告诉我。我不完全理解。

代码:

<asp:TemplateField>
    <ItemTemplate>
    <asp:Label runat="server" Text='<%# Math.Round(decimal.Parse((((int.Parse(Eval("Num1").ToString())) * 36) / (235 * int.Parse(Eval("Num2").ToString()))).ToString()), 0); %>'></asp:Label>
    </ItemTemplate>
</asp:TemplateField>

错误:CS1525:表达式术语","无效

有一个逗号。。。但这是关于Math.Round的第二个论点。还是我在做一些这样做不到的事情?此外,Math.Round行没有表示后面的代码中有任何错误(我的括号应该很好)。

<;%#-新手奇怪的错误

在数据绑定表达式中,您只能使用一条语句。放下";"。我相信这句话本身是正确的。

如果您确实需要执行舍入等操作,只需在代码背后创建一个名为Round的公共函数,然后从数据绑定表达式中调用它。这样一来,逗号就不会有任何问题,而且所有逻辑都放在一个地方,这样以后更容易保持一致性。

它对我来说还不错。然而,它看起来确实是一行相当令人困惑的文本。如果Num1和Num2是数据库中的列,那么您可以在表示表的类上添加一个属性。

因此,在定义Num1和Num2的位置旁边,定义另一个属性——不表示数据库中的列,而是表示数据库中值的计算。

这将从一个特定的页面中删除计算,因此如果您必须在某个地方再次使用它,您可以只引用该属性。

或者,您可以在代码后面引用一个方法。。。

<%# GetComputedValue((int)Eval("Num1"), (int)Eval("Num2")) %>
protected string GetComputedValue(int num1, int num2)

不过,我更喜欢房地产的想法,因为它是可重复使用的。