我想要一个可重用的验证器,我可以在一组复选框字段上使用它,让我指定要选择的最小数量和可以选择的最大数量。我不确定如何使用不显眼的 javascript 创建服务器端检查和客户端验证以连接到 jQuery 验证框架。
This question在客户端适配器上似乎是一个良好的开端,但是您如何将它们联系在一起以在服务器上对其进行验证?
最佳答案
以下是您至少可以开始服务器端验证的方法。这是一个 very nice article这说明了多个概念。
验证属性:
public class CheckBoxesValidationAttribute : ValidationAttribute
{
public CheckBoxesValidationAttribute (int min, int max)
{
Min = min;
Max = max;
}
public int Min { get; private set; }
public int Max { get; private set; }
public override bool IsValid(object value)
{
var values = value as IEnumerable<bool>;
if (values != null)
{
var nbChecked = values.Where(x => x == true).Count();
return Min <= nbChecked && nbChecked <= Max;
}
return base.IsValid(value);
}
}
模型:
public class MyViewModel
{
[CheckBoxesValidation(1, 2, ErrorMessage = "Please select at least one and at most 2 checkboxes")]
public IEnumerable<bool> Values { get; set; }
}
Controller :
public class HomeController : Controller
{
public ActionResult Index()
{
var model = new MyViewModel
{
Values = new[] { true, false, true, false }
};
return View(model);
}
[HttpPost]
public ActionResult Index(MyViewModel model)
{
return View(model);
}
}
查看(~/Views/Home/Index.cshtml):
@Html.ValidationSummary()
@using (Html.BeginForm())
{
@Html.EditorFor(x => x.Values)
<input type="submit" value="OK" />
}
编辑器模板(
~/Views/Home/EditorTemplates/bool.cshtml
):@model bool
@Html.CheckBoxFor(x => x)
关于asp.net-mvc - 如何为最小和最大数量的复选框创建 ASP.NET MVC3 验证器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5473918/