前面的文章中实现了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>