ASP.NET MVC将null转换为零长度字符串

时间:2011-03-21 21:02:52

标签: validation asp.net-mvc-3

我正在使用MVC 3并尝试将字段留空以作为零长度字符串而不是空值发送到数据库。这可能与数据注释属性有关吗?

如果没有,从nulls转换的最合适的地方是什么?它是在模型验证期间吗?

3 个答案:

答案 0 :(得分:12)

虽然不理想,但这是我所知道的最佳方式:[DisplayFormat(ConvertEmptyStringToNull = false)]位于酒店上方。它保留了模型中的逻辑,这是一种很好的实践,它直接解决了这个问题。这是必要的,这只是一个无赖。

private string _summary = "";
[Required]
[DisplayFormat(ConvertEmptyStringToNull = false)]
public virtual string Summary
{
    get { return _summary; }
    set { _summary = value; }
}

答案 1 :(得分:0)

我不会在验证器中执行此操作,但可能在模型绑定中(或甚至在模型本身中)。

通常,在我的模型类中,我将字符串属性设置为默认为空字符串,并且在其setter中,我将空值转换为空字符串。

一遍又一遍地写这些重复的东西真是太痛苦了,但是不必处理空值就好了。

答案 2 :(得分:0)

在构造函数中将属性设置为string.empty

或者,虽然这有点贵,但您可以创建一个执行以下操作的扩展方法,并在构造函数中调用它:

 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);
 }