私のMVC Webアプリケーションでは、imageuploadコンポーネントを持つフォームがあります。 imageupload Image-dataは、データアノテーションの助けを借りて検証されます。 私のサーバー側の検証が動作しているが、私のクライアント側のjQuery関数が呼び出されていない...私はwhy- HELPを知らない:ファイルアップロード、クライアントスクリプトが呼び出されていませんか?データアノテーション
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" })
[ValidImageUpload]
public IEnumerable<HttpPostedFileBase> FileUploader { get; set; }
3.ValidImageUploadファイル:
私のモデルでは2.、私はこれを持っています
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 "})を使用してください。 –
ありがとうございます。この質問を閉じる方法。 –