<;%#-新手奇怪的错误
本文关键字:错误 新手 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)
不过,我更喜欢房地产的想法,因为它是可重复使用的。