如何验证文件';在ASP.NET MVC 5项目中,使用jquery验证的大小是否不引人注目?
我有一个web项目,它是在ASP.NET MVC 5框架之上使用c#编写的。我正在使用如何验证文件';在ASP.NET MVC 5项目中,使用jquery验证的大小是否不引人注目?,jquery,asp.net-mvc-5,jquery-validate,unobtrusive-validation,Jquery,Asp.net Mvc 5,Jquery Validate,Unobtrusive Validation,我有一个web项目,它是在ASP.NET MVC 5框架之上使用c#编写的。我正在使用jqueryvalidation unobtrusive包来建立客户端验证。我正在尝试添加一个名为filesize的新规则,该规则检查附加文件的大小 因此,当附加文件的大小大于允许的大小时,我想显示客户端大小错误消息 我创建了一个属性,以便能够在视图模型中使用它来装饰我的HttpPostedFileBase属性,以设置允许的最大大小。课堂上展示了我是如何使用它的 然后,在我的javascript文件中,我添加了
jqueryvalidation unobtrusive
包来建立客户端验证。我正在尝试添加一个名为filesize
的新规则,该规则检查附加文件的大小
因此,当附加文件的大小大于允许的大小时,我想显示客户端大小错误消息
我创建了一个属性,以便能够在视图模型中使用它来装饰我的HttpPostedFileBase
属性,以设置允许的最大大小。课堂上展示了我是如何使用它的
然后,在我的javascript文件中,我添加了以下代码来注册一个在中调用的新方法
模型
看法
我可以看到适配器正在注册,但没有调用该方法
当用户上传超过设置的文件大小时,我希望显示一条错误消息,但是当附加文件时,不会调用该消息
我创建了一个存储库来显示如何不调用$.validator.addMethod(“filesize”,函数(值、元素、参数)
,可以从
我在这里做错了什么?如何使用
$注册filesize
方法。验证器?您对图片的文件输入是隐藏的,默认情况下,隐藏的输入不会被验证
您可以通过包含以下脚本来覆盖默认值
$.validator.setDefaults({
ignore: []
});
或者,如果您有其他不希望验证的隐藏元素,那么您可以给元素一个类名(比如class=“fileinput”
)并使用
当一个名为unobtrusivevalidation
的标签已经存在时,请不要创建一个名为jquery validate unobtrusivevalidation
的新标签。您在console.log('Dumping the file object',element.files[0]);
中有一个简单的输入错误,这会导致脚本失败-它的元素.files[0]
作为旁注,不要将多个验证条件组合到一个属性中。您应该有一个单独的FileTypeAttribute
(请参阅示例)注意,这些脚本不应包装在$(document).ready()中
如果您已经这样做了,请查看您的回购协议。您有一个图片
的隐藏输入-默认情况下,隐藏输入不会被验证(但您可以覆盖验证器以包含它们-请参阅示例)
<div class="form-group" id="Picture_Block">
<label class="control-label col-md-2" for="Picture">Picture</label>
<div class="col-md-10">
<div class="input-group uploaded-file-group max-input-width">
<label class="input-group-btn">
<span class="btn btn-default">
Browse
@Html.HiddenFor(x => x.Picture, new { @class= "hidden force-validaion", type = "file" })
</span>
</label>
<input class="form-control uploaded-file-name" readonly="" type="text">
</div>
@Html.ValidationMessageFor(x => x.Picture)
</div>
</div>
$.validator.addMethod("filesize", function (value, element, param) {
if (value === "") {
return true;
}
var maxBytes = parseInt(param);
if (element.files !== undefined && element.files[0] !== undefined && element.files[0].size !== undefined) {
console.log('Dumping the file object', element.files[0]);
var filesize = parseInt(element.files[0].size);
return filesize <= maxBytes;
}
return true;
});
$.validator.unobtrusive.adapters.add('filesize', ['maxfilesize'], function (options) {
// set the parameter
options.rules['filesize'] = options.params.maxfilesize;
if (options.message) {
// If there is a message, set it for the rule
options.messages['filesize'] = options.message;
}
});
$.validator.setDefaults({
ignore: []
});
$.validator.setDefaults({
ignore: ":hidden:not('.fileinput')"
});