2013-04-22 4 views
0

У меня есть приложение MVC4 с ненавязчивой проверкой на стороне клиента javascript. Это работает отлично, за исключением десятичной проверки. Я встречаю какое-то странное и раздражающее поведение.с десятичной точностью валидации на стороне клиента не работает, как должно быть

Десятичная проверка допускает только числа с тремя числами после десятичного разделителя. Тем не менее, я хочу, чтобы это работало с двумя числами после разделителя (или просто любое число в порядке, как по умолчанию, если я прав).

так 1.222 действительно и 1.22, и пока я не буду его действительным. (1.2222 не является допустимым).

на мой взгляд, у меня нормальный:

@Html.TextBoxFor(x => x.BasePrice) 

моя модель:

[Required] 
public decimal BasePrice { get; set; } 

и мой контроллер:

ProductVM model = new ProductVM() 
{ 
    BasePrice = product.BasePrice 
}; 
  • продукт является Entity Framework 4 EntityObject

Я также попытался положить;

[DisplayFormat(DataFormatString = "{0:n2}", ApplyFormatInEditMode = true)] 

в моей модели. Но это тоже не работает. Это не имеет никакого эффекта.

Я никогда не видел подобного поведения при работе с MVC. Я понятия не имею, где искать. Любые подсказки?

ответ

1

Я до сих пор не знаю, в чем проблема, но я установил его с немного грязным обходным:

$.validator.methods.number = function (value, element) { 

    if(!isNaN(parseFloat(strValue))) 
    { 
     return true; 
    } 

    return false; 

} 

путем переопределения проверки на сторону клиента десятичной. просто добавил это в блок сценария в моем _layout.cshtml.

Проверка на стороне сервера обеспечит безопасность по-прежнему в полной мере путем полной проверки.