Проверка формы - поле X должно быть числом - PullRequest
0 голосов
/ 29 апреля 2018

У меня проблема с проверкой форм ядра asp.net при использовании десятичного поля в моей viewmodel, где значение ввода получает число с запятой, но при отправке это не позволяет ..

ViewModel:

public class MyViewModel
{
    public decimal Price { get; set; }
}

Страница бритвы:

<div class="form-group row">
    <label asp-for="Price" req-asterisk="true" class="col-md-3 col-lg-2 col-form-label"></label>
    <div class="col-md-9 col-lg-10">
         <input asp-for="Price" class="form-control" rows="4" />
        <span asp-validation-for="Price" class="text-danger"></span>
    </div>
</div>

Таким образом, если, например, свойство Price принимает значение 4000, входное значение принимает значение 4000,00, и если я нажимаю кнопку "Отправить", оно говорит: "Поле Цена должно быть числом."

1 Ответ

0 голосов
/ 30 апреля 2018

Учитывая, что ваше поле Price должно содержать значение, вам нужно использовать строку для доступа к вашему значению. Вот пример того, что вы можете сделать со строковым свойством с некоторыми опциями сохранения памяти:

public class MyViewModel
{

    private string _priceDisplay;
    [DataType(DataType.Currency)]
    public string PriceDisplay {
        get => _priceDisplay ?? _price.ToString();
        set => _priceDisplay = value;
    }

    private decimal? _price;
    public decimal Price
    {
        get => _price ?? decimal.Parse(PriceDisplay);
        set => _price = value;
    }


}

Теперь вы можете сопоставить ваш ввод с PriceDisplay

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...