Как установить значение по умолчанию для пустой строки TextBox вместо нулевого
Я могу устареть, но один принцип, которым я придерживаюсь, - это максимально избегать нулей.
Однако я обнаружил, что для строго типизированного представления, в котором пользователь вводит свойства объекта, который я хочу сохранить, если некоторые поля не введены, они назначаются как null.
Затем, когда вы пытаетесь сохранить изменения, проверка не выполняется.
Поэтому вместо того, чтобы устанавливать каждое свойство в пустую строку, как я могу автоматически установить для каждого TextBox по умолчанию по умолчанию пустую строку, а не null?
Ответы
Ответ 1
Вы можете поместить следующий атрибут в свои свойства строки в вашей модели:
[DisplayFormat(ConvertEmptyStringToNull=false)]
Поэтому всякий раз, когда кто-то отправляет форму с пустыми текстовыми полями, это будет пустая строка вместо нулевого...
Ответ 2
Если честно, я бы сказал, что ваша методология кодирования устарела и испорчена. Вы должны обращаться со всеми возможностями, это не сложно. Это то, за что string.IsNullOrEmpty(value);
.
Я предполагаю, что ваша логика проверки выглядит примерно так:
if (value == string.Empty) { isValid = false; }
Таким образом, он не обрабатывает нулевые значения. Вы должны заменить эту проверку, чтобы она также проверяла нули.
string value1 = null;
string value2 = string.Empty;
string.IsNullOrEmpty(value1); // true
string.IsNullOrEmpty(value2); // true
Ответ 3
Альтернативное решение для использования атрибутов для каждого свойства модели, как описано в принятом ответе, использует настраиваемое связующее устройство, см. string.empty, преобразованное в null при передаче объекта JSON в MVC-контроллер
Ответ 4
Я столкнулся с этой проблемой при работе со старой службой, для которой требуются пустые строки. Я создал метод расширения:
public static string GetValueOrDefault(this string str)
{
return str ?? String.Empty;
}
Таким образом, вы можете использовать это, когда хотите удостовериться, что строки, которые пустые, пустуют
yourString1.GetValueOrDefault();
yourString2.GetValueOrDefault();