我正在尝试上传文件后执行任务。任务完成后,我想显示一些信息。目前我有一个上传操作,点击“执行任务”按钮后会触发,这是不好的。问题:我想触发'Sometask'动作而不是上载动作?
<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 :(得分:0)
是否调用了Upload()方法?看一下代码,我希望调用Sometask()而不是Upload()方法。当单击按钮时,jQuery代码调用.post,这应该消除正常的表单发布。如果未调用Sometask(),则需要将[HttpPost]属性添加到Sometask()方法中。
请注意,出于安全原因,无法从Javascript上传文件。