我正在尝试实现一个可以接收各种文件数量的文件上传器。文件输入元素都命名相同,因此生成 MVC3 愉快地绑定(bind)到的文件列表。
所以在我的 Controller 中我有public virtual ViewResult UploadReceive(IEnumerable<HttpPostedFileBase> Files ){
这将获得它应该得到的所有文件。然而,所有空的表单文件输入元素都添加了一个空值。这会阻止我在 Controller 中的基本非空列表验证按我的意愿工作。
验证如下:
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;
}
}
知道如何将验证更改为一般只计算非空元素吗?
最佳答案
如果您只想计算非空对象,您可以使用带有 IList
的 LINQ:
list.Cast<object>().Count(o => o != null)
或者,您可以循环并计算每个非空对象。
int count = 0;
foreach (var item in list)
{
if (item != null)
count++;
}
关于asp.net - 如何使用 MVC 属性验证列表具有大于零的非空元素?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8429127/