gpt4 book ai didi

asp.net - 将可为空的 int 绑定(bind)到 asp :TextBox

转载 作者:行者123 更新时间:2023-12-04 18:16:30 25 4
gpt4 key购买 nike

我有房产int? MyProperty作为我的数据源(ObjectDataSource)中的成员。我可以将它绑定(bind)到一个文本框,比如

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

基本上我想得到一个 null值显示为空白 ""在文本框中,和一个数字作为一个数字。如果文本框为空 MyProperty应设置为 null .如果 TextBox 中有一个数字,MyProperty 应该设置为这个数字。

如果我尝试它,我会得到一个异常(exception):“空白不是有效的 Int32”。

但我该怎么做呢?如何使用可为空的属性和绑定(bind)?

提前致谢!

最佳答案

好吧,我找到了一个解决方案,其中包括一个 FormView 但是你没有指定它是否适合你的场景。

无论如何,在我的情况下,DataBound-ed 实体是我自己的 dto(并不重要),诀窍是当您更新 formview 时,您必须基本上附加 pre-databound 事件并重新编写空的字符串作为空值,以便框架可以将值属性注入(inject)到构造的对象中:

protected void myFormView_Updating(object sender, FormViewUpdateEventArgs e)
{
if (string.Empty.Equals(e.NewValues["MyProperty"]))
e.NewValues["MyProperty"] = null;
}

同样在插入
protected void myFormView_Inserting(object sender, FormViewInsertEventArgs e)
{
if (string.Empty.Equals(e.Values["MyProperty"]))
e.Values["MyProperty"] = null;
}

让这件事真正有趣的是,错误消息(不是有效的 Int32)实际上是错误的,它应该写(不是有效的 Nullable)但是 nullables 将是一等公民,不是吗?

关于asp.net - 将可为空的 int 绑定(bind)到 asp :TextBox,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2519934/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com