Advertisement
Guest User

Untitled

a guest
Dec 12th, 2018
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. Това ми е частта от PartialView-to в MVC проекта, отговорна за ъплоудването на файлове:
  2.  
  3.     <div id="drop-zone">
  4.         <div id="clickHere">
  5.             Select file... <i class="fa fa-upload"></i>
  6.             <input type="file" name="fileUpload" id="fileUpload" multiple="multiple" />
  7.  
  8.         </div>
  9.         <div id='filename'></div>
  10.  
  11.     </div>
  12.  
  13. Това ми е js файла в него добавям файлове, изтривам и прихващам когато се натисне бутона събмит вместо да се извиква стандартния mvc събмит - изпращам ajax с данните от формата и прикачените файлове:
  14.  
  15. var filesCollection = [];
  16. var fileCounter = 0;
  17.  
  18. $(function () {
  19.     var dropZoneId = "drop-zone";
  20.     var mouseOverClass = "mouse-over";
  21.     var dropZone = $("#" + dropZoneId);
  22.     var inputFile = dropZone.find("input");
  23.  
  24.     document.getElementById(dropZoneId).addEventListener("drop", function (e) {
  25.         $("#" + dropZoneId).removeClass(mouseOverClass);
  26.     }, true);
  27.  
  28.     inputFile.on('change', function (e) {
  29.         var fileNum = this.files.length,
  30.             fileNames = "";
  31.         var fileInput = $('#fileUpload').prop('files')[0];
  32.        
  33.         fileNames = this.files[0].name + '&nbsp;';
  34.        
  35.         var newFileZone = '<div id="file_' + fileCounter + '"><span><strong style="color:#FFF; font-size:12px; margin-top:2px;">' + fileNum + '</strong></span><span>' + fileNames + '</span>&nbsp;<span class="closeBtn btn btn-danger btn-xs" title="remove" onClick="removeFile(' + fileCounter +');">X</span></div>';
  36.         $('#filename').append(newFileZone);
  37.  
  38.         filesCollection.push({
  39.             key: ('file_' + fileCounter),
  40.             value: fileInput
  41.         });
  42.         fileCounter = fileCounter + 1
  43.        
  44.     });
  45. });
  46.  
  47. function removeFile(fileCounter) {
  48.  
  49.     $('#file_' + fileCounter).remove();
  50.  
  51.     filesCollection = filesCollection.filter(item => item.key !== 'file_' + fileCounter)
  52. }
  53.  
  54. $('#submitBtn').click(function (e) {
  55.  
  56.     e.preventDefault();
  57.  
  58.     var params = $('form').serializeArray();
  59.     var formData = new FormData();
  60.     var filesCount = Object.keys(filesCollection).length;
  61.  
  62.    
  63.     for (i = 0; i < filesCount; i++) {
  64.  
  65.         var fileToAppend = filesCollection[i].value;
  66.         formData.append('files', fileToAppend);
  67.     }
  68.  
  69.     $(params).each(function (index, element) {
  70.         formData.append(element.name, element.value);
  71.     });
  72.  
  73.  
  74.  
  75.     if ($('form').valid()) {
  76.  
  77.         $.ajax({
  78.             type: "POST",
  79.             url: ("/Administrator/Prospect/Create"),
  80.             processData: false,
  81.             contentType: false,
  82.             dataType: "JSON",
  83.             data: formData,
  84.             async: false,
  85.             error: function (req, err) { console.log('my message' + err); }
  86.         });
  87.     }
  88. });
  89.  
  90. Проблема ми е че ми трябва валидация на полетата, която направих с jquery unobtrusive validation. Но той се изпълнява при натискане на бутона събмит.. И съответно нямам валидация.
  91. Всяка идея/насока от твоя страна ще ми бъде от огромна полза :)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement