最近将我的ASP.NET项目从1.1转换为3.5。万岁!目前正在开发一个包含少数可选字段的表单。通常,我会在我的代码中查看,添加大量的if语句,检查空字段,如果是,则将值设置为0。所以,我想知道最好是否最好为每个字段声明私有的,可空的变量,然后将它们作为我的数据库更新的参数添加?使用MSSQLS 2000,已经设置了相应的字段以允许空值。
澄清:网络表单包含美元金额的字段。输入的默认值为0,但如果用户删除其中一个0,将该字段留空然后提交表单,则会在方法的参数列表中的Convert.ToDecimal(MoneyField.Text)中抛出异常。将所有这些提交到数据库。是否有一种更清洁的方法可以做到这一点,我错过了?
答案 0 :(得分:1)
你可能 许多真正可以为空的字段似乎很不寻常,但如果你需要分别将“无价值”描述为任何魔术域值(例如)int
,然后是:Nullable<T>
可以提供帮助。请注意,您必须在数据层从null
手动翻译为DbNull.Value
,null
上的SqlParameter
表示“不发送此参数”,不“发送值null
”(如果您看到区别)。
答案 1 :(得分:1)
我认为现场验证与Nullable Type之间存在混淆......除非你有一些类型...说DateTime
并希望它为空...这是不可能的除非使用Nullable Type 。
如果是这种情况那么......是的......可以说是可以自然的类型。
答案 2 :(得分:0)
你必须改变几个电话
static class NConv
{
static T? ToNullable<T>(string str) where T : struct
{
return (T?)(string.IsNullOrEmpty(str) ? default(T?) : Convert.ChangeType(str, typeof(T)));
}
static void HowTo()
{
double? myBonus = NConv.ToNullable<double>(null);
}
}
答案 3 :(得分:0)
根据提供的字段动态构建您的SQL。