Моя первая и главная проблема здесь будет: почему ваше приложение в первую очередь сохраняет значения в базе данных? Хотя xVal - это хороший способ сделать приложение удобным для пользователя, вы все равно ДОЛЖНЫ выполнять проверку на стороне сервера. Если вы не проверяете свои данные на сервере - у вас большая дыра в безопасности! Попробуйте проверить, есть ли ModelState.IsValid в вашем контроллере перед сохранением значений.
Теперь, как я вижу, вы регистрируете проверку xVal с помощью
<%= Html.ClientSideValidation<Product>("Product") %>
Способ, которым он работает, заключается в том, что он обеспечивает проверку на стороне клиента для всех элементов управления с префиксом «Product». С другой стороны, ваше текстовое поле имеет идентификатор FromPriceInCents
Таким образом, решение здесь было бы сделать это:
<%= Html.TextBox("FromPriceInCents")%>
<%= Html.ValidationMessage("FromPriceInCents")%>
<%= Html.ClientSideValidation<Product>() %>
UPD3
Я обновил пост. Исправлена ошибка, при которой код не использовался.
Кроме того, я скомпилировал рабочее решение, которое содержит рабочее решение. Свойства List, Edit, Create page, string и int и проверка xVal.
public class Product
{
[ScaffoldColumn(false)]
public int Id { get; set; }
[Required]
[Range(1,50)]
public int PriceInCents { get; set; }
[Required]
[StringLength(50)]
public string Name { get; set; }
}
и на виду
<%= Html.TextBoxFor(model => model.PriceInCents) %>
<%= Html.ValidationMessageFor(model => model.PriceInCents) %>
Вот ссылка на скачивание. Проверьте это и скажите, работает ли он
http://www.flexlabs.org/download/xValTest