В ядре asp. net пустая строка преобразуется в NULL? - PullRequest
0 голосов
/ 18 марта 2020

Предполагая, что у меня есть form, и значение "" выбирается, когда form отправляется из представления в controller в action method, asp.net core преобразует пустую строку в NULL значение?

Если я не сделаю логическое свойство обнуляемым для атрибута [required], это выдаст мне следующую ошибку: Значение '' недопустимо.

Означает ли это что: "" оценивается как NULL, логическое свойство не позволяет NULL, asp. net ядро ​​возвращает ошибку о том, что вы не можете передать пустой string свойству Model потому что это не обнуляемо, потому что asp.net core преобразует пустую строку в NULL?

Ответы [ 4 ]

1 голос
/ 19 марта 2020

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

1 голос
/ 19 марта 2020

MVC привязка модели поддерживает привязку пустой строки как пустой или пустой строки, в зависимости от метаданных.

Вы можете контролировать это поведение для каждого поля с атрибутами;

[DisplayFormat(ConvertEmptyStringToNull = false)]
public string Property { get; set; }

Или переопределить это поведение глобально путем реализации пользовательского IDisplayMetadataProvider. Или даже предоставив свой собственный IModelBinder / IModelBinderProvider.

0 голосов
/ 19 марта 2020

Первое, что вам нужно понять, это то, что поле Параметры здесь имеет тип bool(not string).

The only content it can receive is true or false or null, независимо от того, введете ли вы пустую строку или строку, отличную от true или false, она будет распознана как нулевая.

Атрибут Reuqired указывает что поле Опции не может быть пустым , потому что Options is a bool type, поэтому после ввода пустой строки пустая строка преобразуется в нулевое значение, и из-за ограничения атрибут reuqired, он не может быть нулевым, поэтому он будет напоминать вам недействительный.

Если вы хотите, чтобы Options мог принимать нулевые значения, вам нужно только удалить атрибут reuqired.

В предположении Обязательное ограничение атрибута, я сделал тест кода, вы можете обратиться к:

enter image description here

0 голосов
/ 18 марта 2020

Нет, это не так - в сообщении написано: «Значение» недопустимо ». как выглядит пустая строка.

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