ASP.NET MVC4中checkboxlist的验证实现

本文介绍如何在ASP.NET MVC4中实现CheckboxList的验证,包括后台的ListSelectRangeAttribute自定义验证和前端jQuery.validate.unobtrusive.js的扩展。通过后台验证确保至少选择1个且不超过3个选项,并提供前端页面的错误提示。
摘要由CSDN通过智能技术生成

前面的文章中实现了htmlhelper中的checkboxlist的扩展方法,但是没有实现对checkboxlist的验证,现在来实现对验证功能的扩展。

要实现验证需要实现两个方面的验证,一个是后台的验证,就是自定义一个validateattribute类,还有一个就是对js脚本验证的扩展。

首先来实现后台的验证,再项目中新建一个类名叫ListSelectRangeAttribute,其中代码如下。

using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Web.Mvc;

namespace System.ComponentModel.DataAnnotations
{
    /// <summary>
    /// checkboxlist验证
    /// </summary>
    [AttributeUsage(AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Parameter, AllowMultiple = false)]
    public class ListSelectRangeAttribute : ValidationAttribute, IClientValidatable
    {

        /// <summary>
        /// 构造函数
        /// </summary>
        public ListSelectRangeAttribute()
        {
            MinSelected = 0;
            MaxSelected = -1;
        }

        /// <summary>
        /// 最少选择个数
        /// </summary>
        public int MinSelected { get; set; }

        /// <summary>
        /// 最多选择个数
        /// </summary>
        public int MaxSelected { get; set; }

        /// <summary>
        /// viewmodel验证规则
        /// </summary>
        /// <param name="value"></param>
        /// <returns></returns>
        public override bool IsValid(object value)
        {
            if (value == null)
            {
                return false;
            }
            int length = (value as Array).Length;
            return (length >= MinSelected && (MaxSelected <= 0 || length <= MaxSelected));
        }

        /// <summary>
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值