Конфликт при проверке формы Сервер / Клиент по поводу десятичного разделителя - PullRequest
0 голосов
/ 02 сентября 2018

Моя модель:

    [Required(ErrorMessage = "Required field")]
    [Display(Name = "Price")]
    public decimal Price { get; set; }

Мой взгляд: Есть форма с несколькими другими полями ввода и полем ввода для Price

@Html.EditorFor(model => model.Price, new { htmlAttributes = new { @class = "form-control"} })

Выпуск:

  • [Проверка браузера] Если я вставлю 2.3 в поле ввода, я получу «Поле должно быть числом»
  • [Проверка сервера] Если я вставлю 2,3 в поле ввода, это не выдаст ошибку сразу, но после отправки формы я получу «значение недействительно»

Что я пробовал: В SO много тем об этом, поэтому я попробовал несколько предложений, но, к сожалению, безуспешно.

  • Предложение A - System.Globalization.CultureInfo.DefaultThreadCurrentCulture = new System.Globalization.CultureInfo("pt-PT"); в Application_Start ()

  • Предложение B - положить <globalization uiCulture="pt-PT" culture="pt-PT" /> в web.config

  • Предложение C - (в отчаянии) data_val = "false" в поле ввода для отключения проверки браузера. Когда я сделал это, я обнаружил две вещи: если я введу 2.3, значение 0 достигнет контроллера; если я ввожу 2,3, значение «2,3» (с точкой) достигает контроллера, но после сохранения в БД теряет десятичную часть, я имею в виду, что только «2» сохраняется в таблице БД

  • Предложение D - Даже если я ввожу число с запятой в коде, когда я проверяю его в режиме отладки, я вижу, что оно использует точку, а при сохранении в BD сохраняет только "2". Как это возможно?

    Ingredient ингредиент ToAdd = новый ингредиент { Имя = ингредиент. Имя, Цена = Десятичная. Парусная («2,3»), НДС = ингредиент. НДС }; * * Тысяча пятьдесят-две

        if (ModelState.IsValid)
        {
            db.Ingredients.Add(ingredientToAdd);
            db.SaveChanges();
            return RedirectToAction("Index");
        }
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...