ASP.NET MVC 5 - 用于验证复选框的自定义属性
问题描述:
我想验证mvc5中所需的复选框。在大多数情况下,其验证/工作...我的问题是其不触发ErrorMessage。换句话说,它阻止我提交时未检查,但没有显示请接受条款&条件为其应该。ASP.NET MVC 5 - 用于验证复选框的自定义属性
我下面
自定义属性代码验证复选框
namespace Checkboxtest.Models
{
//Making Custom attribute for validating checkbox
// IClientValidatable for client side Validation
public class MustBeTrueAttribute : ValidationAttribute, IClientValidatable
{
public override bool IsValid(object value)
{
return value != null && value is bool && (bool)value;
}
// Implement IClientValidatable for client side Validation
public IEnumerable<ModelClientValidationRule> GetClientValidationRules(ModelMetadata metadata, ControllerContext context)
{
return new ModelClientValidationRule[] {
new ModelClientValidationRule { ValidationType = "checkboxtrue", ErrorMessage = this.ErrorMessage } };
}
}
}
域模型
[Display(Name = "Terms and Conditions")]
[MustBeTrue(ErrorMessage = "Please Accept the Terms & Conditions")]
public bool TermsAndConditions { get; set; }
复选框形式
@using (Html.BeginForm())
{
<div class="form-group">
@Html.CheckBoxFor(x => x.TermsAndConditions)
@Html.LabelFor(x => x.TermsAndConditions)
@Html.ValidationMessageFor(x => x.TermsAndConditions)
</div>
<button type="submit" class="btn btn-success submit">Submit</button>
}
任何人都可以让我知道了什么我做错了?谢谢!
答
下面是修改这应有助于:
namespace Checkboxtest.Models
{
//Making Custom attribute for validating checkbox
// IClientValidatable for client side Validation
public class MustBeTrueAttribute : ValidationAttribute, IClientValidatable
{
private const string defaultError = "'{0}' must be true.";
public MustBeTrueAttribute() : base(defaultErrorMessage)
{
}
public override bool IsValid(object value)
{
return value != null && value is bool && (bool)value;
}
// Implement IClientValidatable for client side Validation
public IEnumerable<ModelClientValidationRule> GetClientValidationRules(ModelMetadata metadata, ControllerContext context)
{
return new ModelClientValidationRule[] {
new ModelClientValidationRule { ValidationType = "checkboxtrue", ErrorMessage = this.ErrorMessage } };
}
}
public override string FormatErrorMessage(string name)
{
return String.Format(ErrorMessageString, name);
}
}
你已经加入这个布局? @ Scripts.Render(“〜/ bundles/jquery”) @ Scripts.Render(“〜/ bundles/jqueryval”) – Johan