2011-05-06 137 views
0

我想在上傳文件後執行任務。任務完成後,我想顯示一些信息。目前,我有一個上傳動作,點擊「做任務」按鈕後會觸發,這並不好。問題:我想只是觸發'Sometask'動作而不是Uploadaction?上傳文件asp.net mvc 2

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server"> 
<%= Html.BeginForm("Upload","Home",FormMethod.Post,new { enctype = "multipart/form-data" }) %> 
<%{ %> 
<%=Html.HiddenFor(model=>model.Filepath) %> 
<input type="file" id="upload" name="upload" /> 
<button id="btnUpload"> 
    upload</button> 
<%} %> 
<button id="btnTask"> 
    Do Task</button> 
<script type="text/javascript"> 
    $(document).ready(function (event) { 
     $('#btnTask').click(function() { 
      $.post("/Home/Sometask", 
      { filePath: $("#Filepath").val() }, 
      function (data) { 
       alert(data); 
      }); 
      event.preventDefault; 
     }); 
    }); 

</script> 

[HttpPost] 
    public ActionResult Upload() 
    { 
     HttpPostedFileBase selectedFile = Request.Files["upload"]; 

     if (selectedFile.ContentLength > 0) 
     { 
      string filePath = Path.Combine(HttpContext.Server.MapPath("\\Uploads\\") 
      , Path.GetFileName(selectedFile.FileName)); 
      selectedFile.SaveAs(filePath); 
      UploadModel model = new UploadModel(); 
      model.Filepath = filePath; 
      return View("Index", model); 
     } 

     return View("Index"); 
    } 

    public string Sometask(string Filepath) 
    { 
     Thread.Sleep(5000); 
     return "ready"; 
    } 

回答

0

在上載()方法被調用?看代碼,我期望Sometask()被調用,但不是Upload()方法。當按鈕被點擊時,jQuery代碼正在調用.post,並且應該消除正常的表單發佈。如果Sometask()沒有被調用,你需要向Sometask()方法添加[HttpPost]屬性。

請注意,出於安全原因,無法從Javascript上傳文件。