ASP NET MVC 3不显眼和客户端验证无法使用placeHolder jQuery插件

时间:2011-11-11 16:40:57

标签: jquery asp.net asp.net-mvc jquery-plugins customvalidator

我正在尝试使用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°”,它“认为”我输入了无效的输入,因为该文本由字母组成,而不仅仅是数字。

知道怎么解决吗?

提前致谢!吉列尔莫。

2 个答案:

答案 0 :(得分:0)

修复了一个错误,该错误涉及在html页面中嵌套表单,并将自定义验证程序移动到另一个类修复了问题。 感谢。

答案 1 :(得分:0)

更新placeholder插件解决了我的问题