рдЕрдЬрд╛рдХреНрд╕ рдПрд╕реНрдк .net mvc рдХреЗ рд▓рд┐рдП рдЕрдЬрд╛рдХреНрд╕ рдЬреЗрдПрд╕ рд╕рдВрд╢реЛрдзрди

рдХрдИ рдиреМрд╕рд┐рдЦрд┐рдП рд╕реА # рдПрдПрд╕рдкреА .NET рдПрдорд╡реАрд╕реА рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ (рдмрд╛рдж рдореЗрдВ рдПрдорд╡реАрд╕реА рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрджрд░реНрднрд┐рдд) рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИ, рдЬреЛ рдореЛрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдбреЗрдЯрд╛ рднреЗрдЬрдиреЗ рдХреЗ рдХрд╛рд░реНрдп рдХреЗ рд╕рд╛рде рд╣реЛрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рдпрд╣ рдХрд╛рд░реНрдп рдЗрддрдирд╛ рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реИред

рдЕрдкрдиреЗ рдХрд╛рдо рдкрд░, рдореИрдВ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рд╡рд┐рдХрд╛рд╕ рдХреЗ рдХреБрдЫ рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реВрдВред рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ рдХреЛрдб рдХреЗ рд▓реЗрдЦрди рдФрд░ рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рд╡рд░реНрдЧреЛрдВ рдФрд░ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЛ рдХрдо рдХрд░рдирд╛ рд╣реИред рдпрд╣ рд╡рд╣ рд╕рд┐рджреНрдзрд╛рдВрдд рдерд╛ рдЬрд┐рд╕рдиреЗ рдкреАрд╡реАрд╕реА рдХреЗ рд▓рд┐рдП jquery.unobtrusive-ajax.js рдФрд░ рдЕрдЬрд╛рдХреНрд╕ рд╡рд░реНрдЧ рдХреЗ рдЙрдкрдпреЛрдЧ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджрд┐рдпрд╛ рдерд╛ред

рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рд╣рдо рд╕реАрдзреЗ Ajax.BeginForm рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВред

рдПрдХ рдЙрджрд╛рд╣рд░рдг:

@using (Ajax.BeginForm("UploadAvatarImage", "Dashboard", null, new AjaxOptions {HttpMethod = "POST", OnSuccess = "UpdateAvatars()", OnFailure = "document.refresh()" }, new {Id = "UploadAvatartForm", enctype = "multipart/form-data" })) { <div class="input-group pt-1 pl-1"> <input type="file" name="avatarFile" class="form-control" id="fileUploaderControl" accept=".jpg"/> </div> <button class="btn btn-sm btn-primary btn-block m-1" type="submit" ></button> } 

рдЗрд╕ рддрдереНрдп рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝ рд░рд╣рд╛ рд╣реИ рдХрд┐ Ajax.BeginForm рдЗрдирдкреБрдЯ [рдкреНрд░рдХрд╛рд░ = рдлрд╝рд╛рдЗрд▓] рдкрд╛рд╕ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдореИрдВрдиреЗ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡реИрд╢реНрд╡рд┐рдХ рдЦреЛрдЬ рдХреАред рдкреНрд░рддреНрдпреЗрдХ рд╕рдорд╛рдзрд╛рди рдкрд░ рдкреБрд░рд╛рдиреЗ рдкрд╕рдВрджреАрджрд╛ рд╕реНрдЯреИрдХрдУрд╡рд░рдлрд╝реНрд▓реЛ рдиреЗ рдПрдХ рд╣реА рдЪреАрдЬрд╝ рдХреА рдкреЗрд╢рдХрд╢ рдХреАред Ajax.BeginForm рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░реЗрдВ, FormData рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рдПрдХ php рд╣реИрдВрдбрд▓рд░ рдмрдирд╛рдПрдВ, рдФрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛрдб рдмрдврд╝рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдпреБрдХреНрддрд┐рдпреЛрдВ рдХреЗ рдФрд░ рднреА рдЕрдзрд┐рдХ рдмрд╛рджрд▓ред

рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рдХрд╣рд╛ рдерд╛, рдореЗрд░реЗ рдЙрддреНрдкрд╛рджреЛрдВ рдореЗрдВ рдореИрдВ рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рдЗрд╕ рдЙрддреНрддрд░ рдХреЗ рдмрд╛рдж рд╕реЗ рдХрд┐ рдореЗрд░реА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЛ рдкреВрд░рд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдореБрдЭреЗ рд╕рдм рдХреБрдЫ рдЦреБрдж рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

рдкрд╣рд▓реА рдЪреАрдЬрд╝ рдЬреЛ рдЖрд╡рд╢реНрдпрдХ рдереА, рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдирд╛ рдерд╛ рдХрд┐ jquery.unobtrusive-ajax.js рдореЗрдВ рдХреМрди рд╕рд╛ рдХрд╛рд░реНрдп рдбреЗрдЯрд╛ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИред

 $(document).on("submit", "form[data-ajax=true]", function (evt) { var clickInfo = $(this).data(data_click) || [], clickTarget = $(this).data(data_target), isCancel = clickTarget && (clickTarget.hasClass("cancel") || clickTarget.attr('formnovalidate') !== undefined); evt.preventDefault(); if (!isCancel && !validate(this)) { return; } asyncRequest(this, { url: this.action, type: this.method || "GET", //     data: clickInfo.concat($(this).serializeArray()) }); }); 

рд╣рдо рдлрд╝рдВрдХреНрд╢рди $ (рдпрд╣) .serializeArray () рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВред рдЪрд░ $ (рдпрд╣) рдореЗрдВ, рд╣рдорд╛рд░рд╛ рдлреЙрд░реНрдо </ /> рдЖрддрд╛ рд╣реИ рдФрд░ рдлрд┐рд░ рдЗрд╕реЗ рдПрдХ рд╕рд░рдгреА рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдХрдВрд╕реЛрд▓ рдореЗрдВ рдЗрд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдЗрд╕рдХреЗ рдЕрдиреБрд░реВрдк рдХреНрд░рдордмрджреНрдз (), рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдХрд┐ рдпреЗ рдХрд╛рд░реНрдп рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд▓реЛрдб рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдпред

рд▓реЗрдХрд┐рди рдкрд╣рд▓реЗ рдЖрдкрдХреЛ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЗрд╕рдХреЗ рд▓рд┐рдП рд╣рдо рдлрд╝рд╛рдЗрд▓рд░рд┐рдпрд░ рд╡рд░реНрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред

 $(document).on("change", "form[data-ajax=true] input[type=file]", function (evt) { var form = $($(evt.target).parents("form")[0]); if (evt.target.files.length > 0) { var fileObj = evt.target.files[0]; var reader = new FileReader(); reader.onload = function () { evt.target.setAttribute("data-ajax-image-data", reader.result); form.find("button[type=submit]")[0].classList.remove("disabled"); } reader.onerror = function () { console.log("Error while loading"); form.find("button[type=submit]")[0].classList.remove("disabled"); } form.find("button[type=submit]")[0].classList.add("disabled"); reader.readAsDataURL(fileObj); } }); 

рдХреЛрдб рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдереЛрдбрд╝рд╛ рд╕рд╛ред

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рдЗрдирдкреБрдЯ рдкрд░рд┐рд╡рд░реНрддрди рдШрдЯрдирд╛ рдХреЛ рдмрд╛рдВрдзрддреЗ рд╣реИрдВ, рд╡рд┐рдХрд▓реНрдк "рдкрд░рд┐рд╡рд░реНрддрди" рдкрд░ рдЧрд┐рд░ рдЧрдпрд╛ред

рдлрд┐рд░ рдЬрд╛рдВрдЪ рд▓реЗрдВ рдХрд┐ рдХреНрдпрд╛ рдлрд╝рд╛рдЗрд▓ рдЪрдпрдирд┐рдд рд╣реИред

рдпрджрд┐ рдлрд╝рд╛рдЗрд▓ рдЪрдпрдирд┐рдд рд╣реИ, рддреЛ рд╣рдо рдЗрд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред рд╕рдорд╕реНрдпрд╛ рдпрд╣ рдереА рдХрд┐ рдбреЗрдЯрд╛ рдХреЛ рдХрд╣реАрдВ рд╕реНрдЯреЛрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рд╣рдо рдбреЗрдЯрд╛ рдХреЛ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рд▓рд┐рдП рд▓рд┐рдЦреЗрдВрдЧреЗред

рдлрд╝рд╛рдЗрд▓ рдбрд╛рдЙрдирд▓реЛрдб рд╣реЛрдиреЗ рддрдХ рдкреБрд╖реНрдЯрд┐рдХрд░рдг рдмрдЯрди рдХреЛ рд▓реЙрдХ рдХрд░реЗрдВред

рддреНрд░реБрдЯрд┐ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЗрд╕реЗ рдХрдВрд╕реЛрд▓ рдкрд░ рд▓рд┐рдЦреЗрдВред рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЕрдВрддрд┐рдо рд╕рдВрд╕реНрдХрд░рдг рдирд╣реАрдВ рд╣реИ, рд╣рд░ рдХреЛрдИ рдЕрдкрдиреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдЕрдкрдЧреНрд░реЗрдб рдХрд░ рд╕рдХрддрд╛ рд╣реИред

рдлрд╝рд╛рдЗрд▓ рдбреЗрдЯрд╛ рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рдХреНрд░рдорд╛рдВрдХрди рдХреЗ рдЖрдзреБрдирд┐рдХреАрдХрд░рдг рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝рддреЗ рд╣реИрдВред

 function selfFormSerializeArray(form) { var array = form.serializeArray(); for (var i = 0; i < form[0].length; i++) { if (form[0][i].type === "file") { var fileObj = form[0][i]; var data = fileObj.getAttribute("data-ajax-image-data") || ""; if (data !== "") { array.push({ name: fileObj.name, value: data }); // console.log("SUCCESS"); } else { //console.log("ERROR"); } } } return array; } 

рдФрд░ рд╣рдо рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдореБрдЦреНрдп рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред

 $(document).on("submit", "form[data-ajax=true]", function (evt) { var clickInfo = $(this).data(data_click) || [], clickTarget = $(this).data(data_target), isCancel = clickTarget && (clickTarget.hasClass("cancel") || clickTarget.attr('formnovalidate') !== undefined); evt.preventDefault(); if (!isCancel && !validate(this)) { return; } asyncRequest(this, { url: this.action, type: this.method || "GET", data: clickInfo.concat(selfFormSerializeArray($(this))) // clickInfo.concat($(this).serializeArray()) }); }); 

рдкреВрд░рд╛ рд╣реЛрдиреЗ рдкрд░, рдЖрдкрдХреЛ рдПрдХ рдкреНрд░реЛрд╕реЗрд╕рд░ рдФрд░ рдбреЗрдЯрд╛ рдкрд╛рд░реНрд╕рд░ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛ред рдЬрд▓реНрджрдмрд╛рдЬрд╝реА рдореЗрдВ рдХреБрдЫ рдРрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИред

рд╣реИрдВрдбрд▓рд░

 public PartialViewResult UploadAvatarImage() { if (!ImageHelper.LoadAvatarImage(this.Request.Form["avatarFile"])) { return null; } return PartialView("Null"); } 

рд╕рд╣рд╛рдпрдХ

 public static bool LoadAvatarImage(string data) { try { var file = AjaxFile.Create(data); return true; } catch (Exception ex) { return false; } 

рдкрд╛рд░реНрд╕рд░

 public AjaxFile(string data) { var infos = data.Split(','); this.Type = infos[0].Split(';')[0].Split(':')[1].Split('/')[1]; this.Source = Convert.FromBase64String(infos[1]); ; } public static AjaxFile Create(string data) { return new AjaxFile(data); } 

рдмрдзрд╛рдИ! рдЕрдм рдЖрдк mvc рдХреЗ рд▓рд┐рдП рдорд╛рдирдХ Ajax рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдлрд╝рд╛рдЗрд▓реЗрдВ рдЕрдкрд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

Source: https://habr.com/ru/post/hi423383/


All Articles