加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – 如何为最小和最大数量的复选框创建ASP.NET MVC3

发布时间:2020-12-16 06:45:11 所属栏目:asp.Net 来源:网络整理
导读:我想要一个可重复使用的验证器,我可以在一组复选框字段上使用它,这将允许我指定要选择的最小数字和可以选择的最大数字.我不确定如何创建服务器端检查和客户端验证,以使用不引人注目的 javascript挂钩到jQuery验证框架. This question似乎是客户端适配器的良
我想要一个可重复使用的验证器,我可以在一组复选框字段上使用它,这将允许我指定要选择的最小数字和可以选择的最大数字.我不确定如何创建服务器端检查和客户端验证,以使用不引人注目的 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; }
}

控制器:

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)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读