Categories: ASP.NET

Как принять и точку, и запятую в качестве разделителя дробной части

Создадим привязки к модели, то есть реализуем интерфейс IModelBinder, чтобы позволить использование и точки, и запятой в качестве разделителя:

public class DecimalModelBinder : IModelBinder
{
    public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
    {
        var valueResult = bindingContext.ValueProvider.GetValue(bindingContext.ModelName);
        if (string.IsNullOrEmpty(valueResult.AttemptedValue))
        {
            return 0m;
        }
        var modelState = new ModelState { Value = valueResult };
        object actualValue = null;
        try
        {
            actualValue = Convert.ToDecimal(
                valueResult.AttemptedValue.Replace(",", "."), 
                CultureInfo.InvariantCulture
            );
        }
        catch (FormatException e)
        {
            modelState.Errors.Add(e);
        }

        bindingContext.ModelState.Add(bindingContext.ModelName, modelState);
        return actualValue;
    }
}

Который потом зарегистрируем в Application_Start:

ModelBinders.Binders.Add(typeof(decimal), new DecimalModelBinder());

Таким образом решается валидация серверной части.

На клиентской части, при условии использования jQuery globalization plugin, следует перегрузить метод:

$.validator.methods.number = function (value, element) {
    // TODO: return true or false if value is a valid decimal
}

Ссылка на источник

 

 

 

Руслан Раянов

Recent Posts

Человеческий фактор в информационной безопасности – самый тонкий момент

https://falconspace.ru/blog/kak-zashchitit-sayt--obespechenie-informacionnoy-bezopasnosti-sayta - Как защитить сайт? Обеспечение информационной безопасности сайта

10 часов ago

Как планировать проект. Управление изменениями IT-проекта

Поговорим о планировании возможностей будущего продукта, неверных шагах, заблуждениях, которые вы можете упустить при проработке…

1 день ago

Что учесть при обеспечении информационной безопасности сайта

https://falconspace.ru/blog/kak-zashchitit-sayt--obespechenie-informacionnoy-bezopasnosti-sayta - Как защитить сайт? Обеспечение информационной безопасности сайта

2 дня ago

Cтандартизация задач сотрудника через личный кабинет #личныйкабинет

https://falconspace.ru/blog/sozdanie-arm-dlya-sotrudnikov--razrabotka-lichnogo-kabineta-dlya-sotrudnikov - Как сделать АРМ сотрудника. Личный кабинет сотрудника на сайте

4 дня ago

Контроль доступа к ресурсам информационной системы

https://falconspace.ru/blog/sozdanie-arm-dlya-sotrudnikov--razrabotka-lichnogo-kabineta-dlya-sotrudnikov - Как сделать АРМ сотрудника. Личный кабинет сотрудника на сайте

5 дней ago

Что дает личный кабинет для руководства компании?

https://falconspace.ru/blog/sozdanie-arm-dlya-sotrudnikov--razrabotka-lichnogo-kabineta-dlya-sotrudnikov - Как сделать АРМ сотрудника. Личный кабинет сотрудника на сайте

6 дней ago