Amith 12807185 Ответов: 2

Formatexception: строка не была распознана как допустимое логическое значение.


string offerID = Request.QueryString["selectedoffers"];
                DataTable dtOffer = OfferDB.GetDisplayOffer(offerID);

if (dtOffer.Rows.Count > 0)
                {
                    DataRow dr = dtOffer.Rows[0];
                    if (Convert.ToBoolean(dr["TrustedForm"]))
                    {


Что я уже пробовал:

Привет,

Столбец TrustedForm-это тип varchar, хранящий 0 и 1. И я получаю выше ошибку в блоке "если". Я проверил через google преобразование 0 и 1 выбрасывает исключение формата. Поэтому мне нужно, чтобы вы, ребята, поделились тем, что можно поместить в блок "Если", чтобы войти внутрь?

2 Ответов

Рейтинг:
4

F-ES Sitecore

Изменить

if (Convert.ToBoolean(dr["TrustedForm"]))


к

if ((string)dr["TrustedForm"] == "1")


Однако вы должны использовать соответствующие типы полей в своей базе данных, поэтому, если это поле предназначено как true\false, измените его на "bit".


Karthik_Mahalingam

5

Amith 12807185

Привет, сработало. Я еще раз проверил код и подтвердил, что значения столбцов базы данных являются "0", " 1 " и null из-за ограничения not null.И в коде я только хочу проверить, является ли значение "1". Так что преобразование в строку делает эту работу за меня.

Рейтинг:
13

Kornfeld Eliyahu Peter

При преобразовании из строки единственными литералами, распознаваемыми ToBoolean, являются "true" и "false" (и null, который дает false) - без учета регистра...
"0" и " 1 " не распознаются...
Если вы уверены, что 0 и 1-это единственные значения, у вас есть два варианта:
1. измените тип базы данных на бит
2. преобразуйте значение сначала в целое число, а затем в логическое


Amith 12807185

Привет, спасибо за глубокое понимание этой ошибки. На самом деле я пытался изменить тип базы данных на бит, но есть зависимости от большего количества процессов хранения. Но и этот ответ работает.