2016-09-04 2 views
1

У меня возникли проблемы с значением ASP.NET Core MVC и decimal?.Как связать десятичные значения с нулевым значением

У меня есть следующий вид: модель

public class BlobViewModel 
{ 
    public int Id { get; set; } 
    public int? IntegerValue { get; set; } 
    public string StringValue { get; set; } 
    [DataType(DataType.Date)] 
    public DateTime? DateValue { get; set; } 
    public decimal? DecimalValue { get; set; } 
} 

И следующий входной элемент, на мой взгляд

<input asp-for="DecimalValue" class="form-control" /> 

Когда я ввести десятичное значение, например, «68,5» или «68,5» и вкладка из входного элемента, я получаю следующее сообщение об ошибке:

The value '68.5' is not valid for DecimalValue.

Я попытался с помощью атрибута выше свойства [DataType(DataType.Currency)], но я не могу показаться, чтобы получить привязка к работе. Другие свойства связывают, как ожидалось.

У кого-нибудь есть идея, как я это делаю?

+0

я был не в состоянии воспроизвести это в базовом проекте .Net ядро ​​(RTM). –

ответ

1

Ошибка возникает, если локальные настройки Windows не установлены в локализацию США, и вы используете шаблон asp.net по умолчанию jquery для проверки десятичных значений. Ошибки должны происходить независимо, если ваши десятичные являются nullable или не

В ASP.NET Core я не думаю, что вы можете заставить локализацию США в web.config, как вы получите в ответ this таким же образом, вы можете за ASP.NET MVC5 и ранее, поэтому вам придется добавить javascript, чтобы переопределить jquery.validate.js, как упоминалось как ответ на тот же вопрос.

создать js файл с именем validationlocalization и поместить его в папку wwwroot\js со следующим содержимым

$.validator.methods.range = function (value, element, param) { 
    var globalizedValue = value.replace(",", "."); 
    return this.optional(element) || (globalizedValue >= param[0] && globalizedValue <= param[1]); 
} 

$.validator.methods.number = function (value, element) { 
    return this.optional(element) || /^-?(?:\d+|\d{1,3}(?:[\s\.,]\d{3})+)(?:[\.,]\d+)?$/.test(value); 
} 

В cshtml страниц, которые требуют проверки десятичную добавить ссылку на файл javascript в вашем сценарии раздела. Убедитесь, что она добавляется после ссылки на существующем _ValidationScriptsPartial.

@section Scripts { 

    ... 

    <script src="~/js/validationlocalization.js"></script> 

More detail на этом обходном

+0

Спасибо, миллион. Это было именно то, что нужно :-) –

 Смежные вопросы

  • Нет связанных вопросов^_^