Есть удалённый сервер с IP где-то за бугром, на нём развёрнут сервер.
Ситуация:
При создании некого продукта на клиенте указываем его цену (float) и отправляем на сервер. Локально (На наших ip и Windows 10) всё происходит нормально, как и задумано. При тестировании на сервере начинается бред какой-то. На сервер передаются числа без знаков запятой или точки (Используются как разделители для числа)
Но сама суть в том, что при тестировании локально float.TryParse выдаёт true при парсе числа через запятую, а на сервере оно даже не доходит к этому
Передаю это всё дело через FromData
Тут дальше есть не
много костылей связанных с JS. К примеру это:
let editPrice = $('#edit-price').val()
if (editPrice.length == 0) {
// Error Viewing
priceIsValid = false;
}
editPrice = editPrice.replace(',', '.')
if (editPrice != Number(editPrice)) {
// Error viewing
priceIsValid = false;
}
editPrice = editPrice.replace('.', ',')
let formData = new FormData();
formData.append('Price', editPrice)
Что бы никто не подумал, что описание вопроса не подходит к его названию. Этот костыль нормально работает локально, но на сервере вообще отваливается. Я просил в GPT, но говорит, что это скорее всего связанно с тем, что сервер находится в другом регионе, где правила разделения чисел иные
Как вообще это фиксить?
UPD: Вообще тут две проблемы в одной, с разными вариантами
1-й вариант:
Модель имеет стринговый Price
Клиент:
let editPrice = $('#edit-price').val()
if (editPrice.length == 0) {
// Error Viewing
priceIsValid = false;
}
editPrice = editPrice.replace(',', '.')
if (editPrice != Number(editPrice)) {
// Error viewing
priceIsValid = false;
}
editPrice = editPrice.replace('.', ',')
let formData = new FormData();
formData.append('Price', editPrice)
Тут ошибка с парсингом числа получается. Вот серверный код, где происходит неправильный парсинг:
if (!float.TryParse(vm.Price, out float price)) { ... }
2-й вариант:
Изменил модель, и теперь она принимает float Price
Клиент:
let editPrice = $('#edit-price').val()
if (editPrice.length == 0) {
// Error Viewing
priceIsValid = false;
}
editPrice = editPrice.replace(',', '.')
if (editPrice != Number(editPrice)) {
// Error Viewing
priceIsValid = false;
}
editPrice = Number(editPrice) // <-- Added
let formData = new FormData();
formData.append('Price', editPrice)
В таком случае в модели Price приходит как ноль. Пробовал также:
- Number(editPrice)
- parseFloat(editPrice)
- +editPrice (GPT подсказал, что так так же можно)