【发布时间】:2016-09-13 12:29:03
【问题描述】:
在我的 MVC Web 应用程序中,我有一个带有 imageupload 组件的表单。 imageupload 图像数据在数据注释的帮助下进行验证。 我的服务器端验证正在运行,但我的客户端 jQuery 函数没有被调用......我不知道为什么 - 帮助:
1.在我的视图中上传文件:
@Scripts.Render("~/bundles/jquery")
@Scripts.Render("~/Scripts/jquery.validate.min.js")
@Scripts.Render("~/Scripts/jquery.validate.unobtrusive.min.js")
<input type="file" id="FileUploader" name="FileUploader" multiple />
<div id="FileDisplay" name="FileDisplay"></div>
@Html.ValidationMessageFor(model => model.FileUploader, "", new { @class = "text-danger" })
2。在我的模型中,我有这个:
[ValidImageUpload]
public IEnumerable<HttpPostedFileBase> FileUploader { get; set; }
3.ValidImageUpload 文件:
public sealed class ValidImageUpload : ValidationAttribute, IClientValidatable
{
string[] stringArray = { "gif", "jpg", "png", "jpeg" };
protected override ValidationResult IsValid(object value, ValidationContext validationContext)
{
IEnumerable<System.Web.HttpPostedFileBase> uploadedFiles = (IEnumerable<System.Web.HttpPostedFileBase>)value;
var firstfile = uploadedFiles.FirstOrDefault();
if (firstfile != null)
{
foreach (var file in uploadedFiles)
{
int pos = Array.IndexOf(stringArray, file.ContentType.Substring(6));
if (pos > -1)
{
if (file.ContentLength > 5242880)
{
return new ValidationResult(String.Format("Billedet: {0} er for stort. (Max. tilladt billede-størrelse xxxxx)", file.FileName));
}
}
else
{
return new ValidationResult(String.Format("Billedt: {0} har et forkert format. Tilladte formater er - GIF, JPG, PNG, JPEG", file.FileName));
}
}
}
return ValidationResult.Success;
}
public IEnumerable<ModelClientValidationRule> GetClientValidationRules(ModelMetadata metadata, ControllerContext context)
{
ModelClientValidationRule mvr = new ModelClientValidationRule();
mvr.ErrorMessage = "Forkert format";
mvr.ValidationType = "validImageUpload";
return new[] { mvr };
}
}
jQuery
$(document).ready(function () {
jQuery.validator.addMethod('validImageUpload', function (value, element, params) {
var currentDate = new Date();
alert('Working indsi´side');
return false;
}, '');
jQuery.validator.unobtrusive.adapters.add('validImageUpload', function (options) {
options.rules['validImageUpload'] = {};
options.messages['validImageUpload'] = options.message;
});
});
【问题讨论】:
-
您已手动生成输入并省略了客户端验证所需的所有
data-*属性。使用@Html.TextBoxFor(m => m.FileUploader, new { type="file", multiple="multiple"}) -
谢谢。如何结束这个问题。
标签: jquery asp.net-mvc