我正在使用jQuery的不顯眼的方法驗證我的模型在UI中。我在模型中有一個數字字段,我想驗證它是一個數字。開箱即用,它幾乎可以正常工作。它在驗證.33與0.33時在客戶端失敗。我知道我可以在jQuery驗證插件中更改正則表達式,但這似乎並不理想。MVC模型驗證不顯眼
因此,要嘗試解決問題,而改裝的插件本身,我創建了以下驗證屬性:
public class DecimalValidator : System.ComponentModel.DataAnnotations.ValidationAttribute, System.Web.Mvc.IClientValidatable
{
protected override ValidationResult IsValid(object value, ValidationContext validationContext)
{
decimal val = 0;
ValidationResult ret = new ValidationResult("Must be a valid decimal");
if (decimal.TryParse(value.ToString(), out val))
return ValidationResult.Success;
else
return ret;
}
#region IClientValidatable Members
public System.Collections.Generic.IEnumerable<System.Web.Mvc.ModelClientValidationRule> GetClientValidationRules(System.Web.Mvc.ModelMetadata metadata, System.Web.Mvc.ControllerContext context)
{
List<System.Web.Mvc.ModelClientValidationRule> ret = new List<System.Web.Mvc.ModelClientValidationRule>();
System.Web.Mvc.ModelClientValidationRule validDecimalRule = new System.Web.Mvc.ModelClientValidationRule
{
ErrorMessage = "Please enter a valid decimal.",
ValidationType = "decimal"
};
ret.Add(validDecimalRule);
return ret;
}
#endregion
}
並將其應用像這樣:
/// <summary>
/// The price per unit.
/// </summary>
[Range(0, double.MaxValue)]
[Display(Name = "Price")]
[DecimalValidator]
public decimal UnitPrice { get; set; }
的問題是, html仍呈現 data-val-number =「字段價格必須是一個數字。」 除新數據外, data-val-decimal =「請輸入有效的小數。」
如何保持默認驗證屬性不被渲染?
沒有正則表達式替換數字驗證的插件,它是不是範圍驗證兩種。 – Darthg8r