【发布时间】:2011-08-05 11:55:15
【问题描述】:
我也在尝试使用客户端验证来实现自定义验证属性。
我的属性如下:
public class FileSize : ValidationAttribute, IClientValidatable
{
private readonly int _size;
public FileSize(int size)
{
ErrorMessage = "Invalid size.";
_size = size;
}
public IEnumerable<ModelClientValidationRule> GetClientValidationRules(ModelMetadata metadata, ControllerContext context)
{
var rule = new ModelClientValidationRule
{
ValidationType = "fileSize",
ErrorMessage = ErrorMessage
};
rule.ValidationParameters["size"] = _size;
yield return rule;
}
public override bool IsValid(object value)
{
return ((HttpPostedFileBase) value).ContentLength < _size;
}
}
并且脚本包含在我的视图中如下所示:
<script src="@Url.Content("~/Scripts/jquery-1.4.4.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.js")" type="text/javascript"></script>
<script type="text/javascript">
$(function () {
$.validator.unobtrusive.adapters.addSingleVal('fileSize', 'size');
});
</script>
问题是,即使包含所有这些脚本和注册新适配器的函数,客户端验证仍然无法正常工作,它只是继续使用服务器端验证......
有什么想法吗?
【问题讨论】:
-
您找到解决方案了吗?如果有,可以分享一下吗?
-
Bump:我实际上正在寻找完全相同类型的验证器(文件大小)。你找到解决办法了吗??
标签: c# jquery asp.net-mvc asp.net-mvc-3