【问题标题】:Refresh PartialView after Post from UploadFile and ajax从上传文件和 ajax 发布后刷新部分视图
【发布时间】:2020-03-16 09:13:38
【问题描述】:

上传文件后如何刷新partialView?

我的部分观点:

<form id="form" name="form" action="/uploader" enctype="multipart/form-data" method="post">
               <input id="files" name="files" type="file" size="1" multiple onchange="uploadFiles('files');" /> 
            <table>
                <tr>
                    @foreach (var item in Model.Vehicules.ImageVehicules)
                    {
                        <td>
                            <img id="img_1" src="~/Fichiers/@item.ImageAnnonceUrl" style="height:100px" />
                        </td>
                    }
                </tr>
            </table>     
</form>

我的 ajax 调用:

 <script>
            function uploadFiles(inputId) {
                var input = document.getElementById(inputId);
                var files = input.files;
                var formData = new FormData();

                for (var i = 0; i != files.length; i++) {
                    formData.append("p_files", files[i]);
                }

                formData.append("p_id", @Model.Vehicules.VehiculeId);
var _url = '@Url.Action("Edit", "Annonces")';
                $.ajax(
                    {
                        url: _url,
                        data: formData,
                        processData: false,
                        contentType: false,
                        type: "POST",
                        success: function (data) {
                            alert("Files Uploaded!");
                        }
                    }
                );
            }
</script>

我在 Controller 中的方法:

  [HttpPost]
    public async Task<IActionResult> Edit(IList<IFormFile> p_files, int p_id)
    {
        IList<IFormFile> files = p_files;
        if (Request.Form.Files.Count > 0)
        {                
                for (int i = 0; i < files.Count; i++)
                {
                    IFormFile file = files[i];
                    var filePath = _env.WebRootPath + @"\Fichiers\" + file.FileName;
                    using (var stream = new FileStream(filePath, FileMode.Create))
                        await file.CopyToAsync(stream);

                    ImageVehicules img = new ImageVehicules();
                    img.ImageAnnonceUrl = file.FileName;
                    img.VehiculeId = p_id;
                    M_ImageVehicules.Insert(img); 
                }
                ModelState.Clear();
                var annonce = await M_VM_Annonces.Charger_Annonces_By_Id(p_id);
                return PartialView("_Images1", annonce);

        }
        return PartialView();
    }

上传正常,但视图没有更新。我的模型已更新。我必须按 F5 才能拍照。

我添加了ModelState.Clear();,但这不起作用。

你有什么想法吗?

【问题讨论】:

    标签: ajax asp.net-core asp.net-mvc-partialview


    【解决方案1】:

    解决了。我添加了一个 div 来包含包含图片的表单:

    <div id="Liste_images">
        <form id="form" name="form" action="/uploader" enctype="multipart/form-data" method="post">
            <div class="buttons">
                <div class="upload-button">
                    <div class="label">Click me!</div>
                    <input id="files" name="files" type="file" size="1" multiple onchange="uploadFiles('files');" />
                    <br />
    
                    <table>
                        <tr>
                            @foreach (var item in Model.Vehicules.ImageVehicules)
                            {
                                <td>
                                    <img id="img_1" src="~/Fichiers/@item.ImageAnnonceUrl" style="height:100px" />
                                </td>
                            }
                        </tr>
                    </table>
                </div>
            </div>
        </form>
    </div>
    

    并修改 ajax 的成功如下 $("#Liste_images").html(data);

      $.ajax(
                        {
                            url: _url,
                            data: formData,
                            processData: false,
                            contentType: false,
                            type: "POST",
                            success: function (data) { 
                                   $("#Liste_images").html(data);
                            }
                        }
                    );
    

    【讨论】:

      猜你喜欢
      • 2013-07-18
      • 2013-04-07
      • 2018-04-26
      • 1970-01-01
      • 2019-08-23
      • 2011-09-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多