ASP.NET MVC Преобразование нулевой строки в нулевую длину - PullRequest
4 голосов
/ 22 марта 2011

Я использую MVC 3 и пытаюсь получить поля, оставленные пустыми, для отправки в базу данных в виде строк нулевой длины вместо нулей.Можно ли это сделать с атрибутами аннотации данных?

Если нет, то какое место лучше всего конвертировать из нулей?Это во время проверки модели?

Ответы [ 3 ]

12 голосов
/ 24 мая 2011

Хотя это и не идеально, это лучший из известных мне способов: [DisplayFormat(ConvertEmptyStringToNull = false)] над объектом.Он сохраняет логику в модели, что является хорошей практикой, и напрямую решает проблему.Это просто облом, что это необходимо.

private string _summary = "";
[Required]
[DisplayFormat(ConvertEmptyStringToNull = false)]
public virtual string Summary
{
    get { return _summary; }
    set { _summary = value; }
}
0 голосов
/ 22 марта 2011

Установите свойство равное 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);
 }
0 голосов
/ 22 марта 2011

Я бы не стал делать это в валидаторе, но, вероятно, вместо этого в привязке модели (или даже в самой модели).

Зачастую в моих модельных классах свойства строк по умолчанию устанавливаются на пустые строки, а в их установках я преобразую нули в пустые строки.

Больно писать этот повторяющийся материал снова и снова, но гораздо приятнее не иметь дело с нулями.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...