提问人:Austin 提问时间:3/29/2011 最后编辑:CommunityAustin 更新时间:3/29/2011 访问量:1281
如何为最小和最大数量的复选框创建 ASP.NET MVC3 验证器?
How do I create an ASP.NET MVC3 validator for minimum and maximum number of checkboxes?
问:
我想要一个可重用的验证器,我可以在一组复选框字段上使用它,这些字段将允许我指定要选择的最小数量和可以选择的最大数量。我不确定如何创建服务器端检查和客户端验证,以使用不显眼的javascript连接到jQuery验证框架。
这个问题在客户端适配器上似乎是一个好的开始,但是如何将它们联系在一起以在服务器上验证它呢?
答:
1赞
archil
3/29/2011
#1
Brad Wilson 在 mvcConf 上做了关于 mvc 验证的精彩演讲。
5赞
Darin Dimitrov
3/29/2011
#2
以下是至少可以开始服务器端验证的方法。这是一篇非常好的文章,说明了多个概念。
验证属性:
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; }
}
控制器:
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)
评论