将nullable int绑定到asp:TextBox

Sla*_*uma 5 asp.net data-binding nullable

我有一个属性int? MyProperty作为我的数据源(ObjectDataSource)中的成员.我可以将它绑定到TextBox,比如

<asp:TextBox ID="MyTextBox" runat="server" Text='<%# Bind("MyProperty") %>' />
Run Code Online (Sandbox Code Playgroud)

基本上我想在TextBox中null显示一个显示为空白的值"",并将数字显示为数字.如果TextBox为空,MyProperty则应设置为null.如果TextBox中有一个数字,MyProperty应设置为此数字.

如果我尝试它,我会得到一个例外:"空白不是有效的Int32".

但是我该怎么做呢?如何使用可空属性和绑定?

提前致谢!

小智 1

<asp:TextBox ID="MyTextBox" runat="server" 

Text='<%# Bind("MyProperty").HasValue ? Bind("MyProperty") : "" %>' />
Run Code Online (Sandbox Code Playgroud)

您可以使用 HasValue 来确定可为 null 的类型是否为 null,然后设置 Text 属性。

  • 感谢您的回复,耐力赛。但这根本不起作用,甚至无法编译。它可以与 Eval 一起使用(至少在将 Eval 的返回转换为 int 之后?),但 Bind 则完全是另一回事。 (2认同)