Как установить значение по умолчанию для пустой строки TextBox вместо нуля - PullRequest
26 голосов
/ 13 августа 2010

Я могу быть устаревшим, но один принцип, которого я придерживаюсь, - это избегать нулей в максимально возможной степени.

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

Затем, когда вы пытаетесь сохранить изменения, проверка не проходит.

Таким образом, вместо того, чтобы устанавливать каждое свойство в пустую строку, как я могу автоматически установить для каждого элемента TextBox в форме значение по умолчанию пустой строкой, а не нулевой?

Ответы [ 4 ]

55 голосов
/ 13 августа 2010

Вы можете поместить следующий атрибут в свои строковые свойства в вашей модели:

[DisplayFormat(ConvertEmptyStringToNull=false)]

Поэтому, когда кто-то публикует форму с пустыми текстовыми полями, это будет пустая строка вместо нуля..

2 голосов
/ 13 августа 2010

Если честно, я бы сказал, что ваша методология кодирования устарела и имеет недостатки. Вы должны использовать все возможности, это не сложно. Это именно то, для чего string.IsNullOrEmpty(value);.

Я предполагаю, что ваша логика проверки выглядит примерно так:

if (value == string.Empty) { isValid = false; } 

Так что он не обрабатывает нулевые значения. Вам следует заменить эту проверку, чтобы она также проверяла наличие нулей.

string value1 = null;
string value2 = string.Empty;

string.IsNullOrEmpty(value1); // true
string.IsNullOrEmpty(value2); // true
1 голос
/ 17 сентября 2014

Я столкнулся с этой проблемой, когда имел дело со старым сервисом, который требует пустых строк.Я создал метод расширения:

public static string GetValueOrDefault(this string str)
        {
            return str ?? String.Empty;
        }

Так что вы можете использовать это, когда хотите убедиться, что все строки, которые являются нулевыми, становятся пустыми

yourString1.GetValueOrDefault();
yourString2.GetValueOrDefault();
1 голос
/ 16 января 2013

Альтернативное решение для использования атрибутов в каждом свойстве модели, как описано в принятом ответе, заключается в использовании пользовательского связывателя модели, см. string.empty, преобразованный в null при передаче объекта JSON в MVC Controller

...