【发布时间】:2012-01-15 18:42:36
【问题描述】:
我正在尝试实现一个可以接收不同数量文件的文件上传器。输入元素的文件都命名相同,因此生成 MVC3 愉快绑定到的文件列表。
所以在我的控制器中我有
public virtual ViewResult UploadReceive(IEnumerable<HttpPostedFileBase> Files ){
这会得到它应该得到的所有文件。但是,所有空的表单文件输入元素都添加了一个空值。这将阻止我在控制器中的基本非空列表验证按我的意愿工作。
验证如下:
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;
}
}
知道如何将验证更改为一般只计算非空元素吗?
【问题讨论】:
-
您的意思是您的列表不为空但包含空元素?你可以做
return list.Count(i => i != null) -
不起作用。我得到错误'System.Collections.IList'不包含'Count'的定义并且没有扩展方法'Count'接受'System.Collections.IList'类型的第一个参数
-
你可能要参考
System.Linq -
是的,这是我首先尝试的。引用了 Linq。我认为问题在于它是通用的。
-
确实,扩展方法在 List 类中。好吧,您可以将类型更改为 List 并使用 linq 或循环并计算自己的非空元素。
标签: asp.net asp.net-mvc-3 validation