MVC3: отправить строку - сбой синтаксического анализа в IE и Chrome - PullRequest
3 голосов
/ 27 марта 2012

У меня проблема с отправленной информацией.Сбой десятичного разбора при попытке проанализировать строку, возвращенную через Interner Explorer или Chrome, но не в Firefox или Safari.Строки выглядят точно так же в Visual Studio.Я сделал этот бит отладки:

var asd3 = collection["formValue"]; // Get it from the FormCollection
var asd4 = asd3.Replace(",", ".");  // Change the punctuation
var asd5 = Decimal.Parse(asd4);     // Make the string into a decimal
var asd6 = Math.Round(asd5, 1);     // Round it

Сбой на asd5 при попытке разобрать десятичное число из asd4 с ошибкой: Input string was not in a correct format.

Вот изображениестроки.Сверху - Firefox, а ниже Internet Explorer.

enter image description here

В чем здесь проблема?

1 Ответ

2 голосов
/ 27 марта 2012

В чем здесь проблема?

Культура.

В вашем отладчике проверьте значение Thread.CurrentThread.CurrentCulture, и вы увидите различия между вашими браузерами.

Если в вашем браузере установлена ​​другая культура, эта культура будет использоваться ASP.NETпри разборе значений, особенно если вы не указали явно язык в своем файле web.config:

<globalization culture="en-US" uiCulture="en-US" />

Если установлено значение auto, будет использоваться культура браузера.

Другая возможность заключается в форсировании инвариантной культуры при разборе, чтобы гарантировать, что . (точка) будет десятичным разделителем.

var asd5 = Decimal.Parse(asd4, CultureInfo.InvariantCulture); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...