Я пытаюсь использовать ненавязчивую проверку с проектом ASPNET MVC 3 и плагином placeHolder jQuery следующим образом:
[StringLength(20)]
[OnlyNumbersValidation(ErrorMessage = " ")]
[DisplayName("Fax n°")]
public string Fax { get; set; }
@Html.TextBoxFor(model => model.Fax, new { @class = "txt-input", placeholder = "Eg. Fax n°", maxlength = 31 })
@Html.ValidationMessageFor(model => model.Fax, "*", new { @class = "redtxt" })
public class OnlyNumbersValidationAttribute : RegularExpressionAttribute, IClientValidatable
{
public OnlyNumbersValidationAttribute()
: base(@"^\d+$")
{
}
public IEnumerable<ModelClientValidationRule> GetClientValidationRules(ModelMetadata metadata, ControllerContext context)
{
{
var errorMessage = FormatErrorMessage(metadata.GetDisplayName());
yield return new OnlyNumbersValidationRule(errorMessage);
}
}
public class OnlyNumbersValidationRule : ModelClientValidationRule
{
public OnlyNumbersValidationRule(string errorMessage)
{
ErrorMessage = errorMessage;
ValidationType = "digits";
}
}
}
Проблема заключается во взаимодействии между MVC 3 и плагином placeHolder, поскольку, если я не ввожу никакого значения (а placeHolder отображается с текстом «Например, факс n °», он «думает», что я ввел неверный ввод, потому что этот текст состоит из букв, а не только цифр.
Есть идеи как это исправить?
Заранее спасибо! Гильермо.