问题描述
|
我正在使用MVC 3,并尝试将保留为空的字段作为零长度字符串(而不是空值)发送到数据库。这可能与数据注释属性有关吗?
如果不是,从null转换的最合适的地方是什么?是在模型验证期间吗?
解决方法
我不会在验证器中执行此操作,但可能会在模型绑定中(甚至在模型本身中)执行此操作。
通常,在模型类中,我将字符串属性设置为默认为空字符串,并在其设置方法中,将null转换为空字符串。
一遍又一遍地写这些重复的东西有点痛苦,但是不必处理空值要好得多。
,虽然并不理想,但这是我所知道的最好方式:在物业上方
[DisplayFormat(ConvertEmptyStringToNull = false)]
。它将逻辑保留在模型中,这是一种很好的做法,并且可以直接解决该问题。这是必须的,真是令人遗憾。
private string _summary = \"\";
[Required]
[DisplayFormat(ConvertEmptyStringToNull = false)]
public virtual string Summary
{
get { return _summary; }
set { _summary = value; }
}
,在构造函数中将属性设置为等于2。
或者,尽管这会花费更多,但您可以制作一个扩展方法来执行以下操作,然后在构造函数中调用它:
var stringPropertyInfos = GetType()
.GetProperties(BindingFlags.Instance|BindingFlags.Public)
.Where(p => p.PropertyType == typeof(string));
foreach(var propertyInfo in stringPropertyInfos){
propertyInfo.SetValue(this,string.Empty,null);
}