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

asp.net – 如何使用MVC属性验证列表是否具有大于零的非null元素

发布时间:2020-12-16 09:50:19 所属栏目:asp.Net 来源:网络整理
导读:我试图implmenet文件上传器,可以采取不同数量的文件.文件输入元素都被命名为相同,因此生成MVC3愉快地绑定到的文件列表. 所以在我的控制器中我有 public virtual ViewResult UploadReceive(IEnumerable HttpPostedFileBase Files){ 这将获得它应该的所有文件.
我试图implmenet文件上传器,可以采取不同数量的文件.文件输入元素都被命名为相同,因此生成MVC3愉快地绑定到的文件列表.

所以在我的控制器中我有

public virtual ViewResult UploadReceive(IEnumerable< HttpPostedFileBase> Files){

这将获得它应该的所有文件.但是,所有空表单文件输入元素都添加了null.这将阻止我在控制器中的基本非空列表验证按我的意愿工作.

验证如下:

public class EnsureMinimumElementsAttribute : ValidationAttribute
{
    private readonly int _minElements;
    public EnsureMinimumElementsAttribute(int minElements)
    {
        _minElements = minElements;
    }

    public override bool IsValid(object value)
    {
        var list = value as IList;
        if (list != null)
        {
            return list.Count >= _minElements;
        }
        return false;
    }
}

知道如何更改验证通常只计算非null元素吗?

解决方法

如果您只想计算非null对象,可以使用LINist和IList:

list.Cast<object>().Count(o => o != null)

或者,您可以循环并计算每个非null对象.

int count = 0;
foreach (var item in list)
{
    if (item != null)
        count++;
}

(编辑:李大同)

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

    推荐文章
      热点阅读