Строка ввода C # имеет неправильный формат

Иногда при выполнении приведенного ниже кода я получаю сообщение об ошибке FormatException. Исключение создается случайным образом. Члены моей команды заметили ошибку при запуске кода и сообщат мне. Через несколько секунд я попытаюсь вставить те же данные, используя то же приложение, и не получу исключения. Ниже я приложил пример текста исключения формата. Исключение подразумевает, что я пытаюсь преобразовать десятичное число в int32, но в значениях ниже, которые я назначаю, ни один из них не является десятичным или int. Кто-нибудь сталкивался с таким исключением формата?

foreach (var strPriceFile in lstPriceFiles)
{
    var SoldToRecs = DbContext.RFQ_SoldTo_PriceLists.Where(us => us.UserId == ERepGuid && us.RFQ_SoldTo_CustNbr == strSoldTo[0] && us.RFQ_SoldTo_CustSeq == strSoldTo[1] && us.IngresFileName == strPriceFile);

    if (SoldToRecs.Count() == 0)
    {
        var PriceFile = new RFQ_SoldTo_PriceList();
        PriceFile.UserId = ERepGuid;
        PriceFile.RFQ_SoldTo_CustNbr = strSoldTo[0];
        PriceFile.RFQ_SoldTo_CustSeq = strSoldTo[1];
        PriceFile.IngresFileName = strPriceFile;
        PriceFile.CreatedBy_UserName = strCreatorName;
        PriceFile.CreatedBy_DateTime = DateTime.Now;
        PriceFile.Active_YN = true;

        DbContext.RFQ_SoldTo_PriceLists.InsertOnSubmit(PriceFile);
    }
}

FormatException: входная строка имеет неправильный формат.] System.Number.StringToNumber (String str, параметры NumberStyles, NumberBuffer & number, информация NumberFormatInfo, логическое parseDecimal) +12630933 System.Number.ParseInt32 (String s, стиль NumberStyles, информация NumberFormatInfo) +224 System.ComponentModel.Int32Converter.FromString (строковое значение, NumberFormatInfo formatInfo) +46 System.ComponentModel.BaseNumberConverter.ConvertFrom (контекст ITypeDescriptorContext, культура CultureInfo, значение объекта) +497

[Исключение: 90.90908893868948 не является допустимым значением для Int32.] System.ComponentModel.BaseNumberConverter.ConvertFrom (контекст ITypeDescriptorContext, культура CultureInfo, значение объекта) +8019613 System.Web.Script.Serialization.ObjectConverter.ConvertObjectToToType (тип объекта, тип Сериализатор JavaScriptSerializer, Boolean throwOnError, Object & convertObject) +938181 System.Web.Script.Serialization.ObjectConverter.ConvertObjectToTypeMain (Object o, тип типа, сериализатор JavaScriptSerializer, логическое throwOnError, Object & convertObjectConverterbject. AssignToPropertyOrField (Object propertyValue, Object o, String memberName, JavaScriptSerializer сериализатор, Boolean throwOnError) +321 System.Web.Script.Serialization.ObjectConverter.ConvertDictionaryToObject (словарь IDictionary`2, тип типа и преобразованный JavaScriptSerializerObject сериализатор System.Web.Script.Serialization.Ob jectConverter.ConvertObjectToTypeInternal (объект o, тип типа, сериализатор JavaScriptSerializer, логический throwOnError, объект и преобразованный объект) +115 System.Web.Script.Serialization.ObjectConverter.ConvertObjectToTypeMain (объект o, тип типа и сериализатор JavaScriptErorbject System.Web.Script.Serialization.JavaScriptSerializer.Deserialize (строковый ввод) +126 Telerik.Web.UI.RadListBox.LoadPostData (String postDataKey, NameValueCollection postCollection) +184 System.Web.UI.PageBeweCollean postData (NameValueData) ) +1018 System.Web.UI.Page.ProcessRequestMain (логическое includeStagesBeforeAsyncPoint, логическое includeStagesAfterAsyncPoint) +2653


person Samuel Jones    schedule 28.05.2015    source источник
comment
Вы пытаетесь выполнить десериализацию в свойство int.   -  person SLaks    schedule 28.05.2015
comment
Исключение вам не врет. Строка имеет неправильный формат. Поймайте исключение, отобразите строку, и вы увидите, что не так с форматом.   -  person John Saunders    schedule 28.05.2015
comment
Эта ошибка выглядит так, будто ваш код вычисляет двойное число с плавающей запятой (не десятичное) 90,1 (приблизительно). Вероятно, все, что генерирует JSON, не обрезает double до int.   -  person Guvante    schedule 28.05.2015


Ответы (1)


Ваша проблема может быть вызвана проблемой увеличения / уменьшения масштаба в Google Chrome, если вы используете RadScheduler, RadListBox и RadTreeView, как указано Христо Валявичарски в приведенных ниже ссылках. . В этом случае вы можете воспроизвести эту проблему, увеличив или уменьшив масштаб в Google Chrome и снова выполните обратную передачу.

Решение этой проблемы можно найти здесь:
http://www.telerik.com/forums/system-formatexception-78e82e51af27#KkKRUtkEq0ST4A09XY_eZQ

Вы можете увидеть объяснение здесь:
http://www.telerik.com/forums/system-formatexception-78e82e51af27#Ww7bQEwfgUiShf9gFFmxBg

Ниже приведены исправления, предоставленные Христо Валявичарским:

Для RadScheduler:

<script type="text/javascript">
Telerik.Web.UI.RadScheduler.prototype.saveClientState = function () {
    return '{"scrollTop":' + Math.round(this._scrollTop) + ',
    "scrollLeft":' + Math.round(this._scrollLeft) + ',
    "isDirty":' + this._isDirty + '}';
} </script>

Для RadTreeView:

<script type="text/javascript">
Telerik.Web.UI.RadTreeView.prototype.saveClientState = function () {
    return "{\"expandedNodes\":" + this._expandedNodesJson +
    ",\"collapsedNodes\":" + this._collapsedNodesJson +
    ",\"logEntries\":" + this._logEntriesJson +
    ",\"selectedNodes\":" + this._selectedNodesJson +
    ",\"checkedNodes\":" + this._checkedNodesJson +
    ",\"scrollPosition\":" + Math.round(this._scrollPosition) + "}";
} </script>

Для RadListBox:

<script type="text/javascript">
    Telerik.Web.UI.RadListBox.prototype.saveClientState = function() {
        return "{" +
                    "\"isEnabled\":" + this._enabled +
                    ",\"logEntries\":" + this._logEntriesJson +
                   ",\"selectedIndices\":" + this._selectedIndicesJson +
                   ",\"checkedIndices\":" + this._checkedIndicesJson +
                   ",\"scrollPosition\":" + Math.round(this._scrollPosition) +
               "}";
    } </script>


Надеюсь, это поможет.

person Yang Kin    schedule 23.10.2015
comment
Хотя эта ссылка может дать ответ на вопрос, лучше включить сюда основные части ответа и предоставить ссылку для справки. Ответы, содержащие только ссылки, могут стать недействительными, если ссылка на страницу изменится. - person TZHX; 23.10.2015
comment
Спасибо за предложение. Обновлено. - person Yang Kin; 23.10.2015