簡體   English   中英

Ajax.BeginForm PartialView不刷新

[英]Ajax.BeginForm PartialView not refreshing

我正在使用asp.net mvc4。我在這里搜索了許多其他類似的問題,但是它們沒有幫助。

我想在上傳文件后刷新我的局部視圖-FileList。 相反,我現在看到重定向到具有更新文件列表的頁面,但是我想在部分視圖中刷新此列表。 :(。有人可以幫忙嗎?可以使用另一種實現類似功能的解決方案:)

我的局部視圖在另一個(索引)局部視圖中。

這是FileController:

private static int folderId = 0;

public ActionResult Index(int id)
{
    folderId = id;
    this.GetFiles();
    return PartialView();
}

public PartialViewResult FileList()
{
    this.GetFiles();
    return PartialView("FileList");
}

[HttpPost]
[ValidateAntiForgeryToken]
public PartialViewResult UploadFiles(IEnumerable<HttpPostedFileBase> filesToUpload)
{
        this.UploadFilesToBase(filesToUpload, 1);

    this.GetFiles();

    return PartialView("FileList");
}

這是Index.cshtml

 <script src="@Url.Content("~/Scripts/jquery-1.8.2.min.js")" type="text/javascript"></script>
 <script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")" type="text/javascript"></script>
 <script src="@Url.Content("~/Scripts/modernizr-2.6.2.js")" type="text/javascript"></script>
 <script src="@Url.Content("~/Scripts/main.js")" type="text/javascript"></script>

 <script src="http://malsup.github.com/jquery.form.js"></script>
 <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7/jquery.js"></script>

@using (Ajax.BeginForm("UploadFiles", "File", null, new AjaxOptions { HttpMethod =             "POST", UpdateTargetId = "FilesListDiv", InsertionMode = InsertionMode.Replace }, new { enctype = "multipart/form-data" }))
{
   <div class="btn-upload-file">
      @Html.AntiForgeryToken()
      <span class="btn"><span>Upload file</span></span>
      <input type="file" class="file" name="filesToUpload" multiple    onchange="javascript:this.form.submit();"><br>
    </div>

 }

<div id="FilesListDiv">
   @*@Html.Action("FileList", "File")*@    
   @Html.Partial("~/Views/File/FileList.cshtml")
</div>

這是我的FileList.cshtml

 @{
    Layout = null;
    ViewBag.Title = "Files";
 }

 @foreach (MyProj.Web.DataContracts.File file in ViewBag.Files)
 {         
    file.Name
 }

您的ajax表單不起作用,可能是因為您沒有在頁面中包含jquery.unobtrusive-ajax.js ,因此,它的工作方式類似於常規的html表單。

添加此文件后,您將能夠通過ajax刷新內容,但是filesToUpload將為null 這樣做的原因是無法通過ajax上傳文件,因為它不支持multipart/form-data編碼類型。

您可以嘗試使用HTML 5 File API的一些jQuery上傳插件。

使用此插件http://malsup.com/jquery/form/ ,它將無需刷新即可提交表單。 將文件上傳到服務器后,可以對上傳成功進行回調。

從服務器獲取的文件列表以html格式呈現(通過partialresult),並在客戶端瀏覽器上進行更新。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM