2014-10-16 220 views
0

我有一个上传视图,需要使用上传三个附件。现在我在视图中使用此代码用于UI部分:jquery返回到没有刷新屏幕的同一屏幕

<div id="theDeliveryNoteContent"> 
    <form action='Order/Save' method="post" enctype="multipart/form-data" id="deliveryNoteForm"> 
     <div > 
      <label style="text-align: left;">Delivery note:</label> 
      <input type="file" name="DeliveryNoteFile" id="DeliveryNote" style="width: 400px;" />  
      <div style="margin-top:4px;margin-bottom:4px" >  
       <input type="submit" value="Upload" id="btnAddAttachment" /> 
      </div> 
     </div>    
    </form> 
</div> 

现在我要调用的方法位于我的订单控制器中。这是我正在使用的方法。代码工作正常,直到返回部分。

[HttpPost] 
    public ActionResult Save(HttpPostedFileBase DeliveryNoteFile) 
    { 
     try 
     { 
      string customer = GetCustomerLinkedToPortalUser(); 
      var uploadPath = "C:\\Attachments\\" + customer; 
      if (!Directory.Exists(uploadPath)) 
      { 
       Directory.CreateDirectory(uploadPath); 
      } 
      if (DeliveryNoteFile != null) 
      { 

       var fileName = Path.GetFileName(DeliveryNoteFile.FileName); 
       var physicalPath = Path.Combine(uploadPath, fileName); 
       DeliveryNoteFile.SaveAs(physicalPath); 
      } 
      return RedirectToAction("Index"); 
     } 
     catch (Exception) 
     { 

      throw; 
     } 

    } 

问题是,当方法返回到屏幕时,刷新屏幕并丢失所有输入的信息。我想将文件保存到该目录并返回到订单屏幕并上传下一个文件。现在,我应该怎么做,我不知道这是我需要帮助。

一位同事提到我可以使用jQuery.Form脚本来做一个ajax调用,所以我做的是我将jquery.form.js脚本添加到我的项目中,做了引用,并且我也将它添加到了我的javascript中:

$("#deliveryNoteForm").ajaxForm({ 
     target: "#theDeliveryNoteContent" 
    }); 

所以现在它返回到我的屏幕,但它弄乱布局和刷新屏幕(似乎)无论如何。有没有其他简单的方法可以用我使用的方法返回到前一个屏幕,而不会丢失所有输入的信息?

回答

0

你需要异步文件上传。使用this。阅读一些文档,这很简单。

实施例:

的Javascript初始化:

$(function() { 
    $('#DeliveryNote').fileupload({ 
     dataType: 'json', 
     done: function (e, data) { 
      $.each(data.result.files, function (index, file) { 
       $('<p/>').text(file.name).appendTo(document.body); 
      }); 
     } 
    }); 
}); 

HTML:

<input id="DeliveryNoteFile" type="file" name="files[]" data-url="yourUploadController/Save/" style="width: 400px;" /> 

和除去提交按钮。

+0

我不知道这是如何工作的...我如何控制它上传到哪里? – 2014-10-16 11:21:17

+0

data-url属性。 – aleha 2014-10-16 12:04:00