上传文件asp.net mvc 2

时间:2011-05-06 03:14:32

标签: c# jquery asp.net-mvc-2

我正在尝试上传文件后执行任务。任务完成后,我想显示一些信息。目前我有一个上传操作,点击“执行任务”按钮后会触发,这是不好的。问题:我想触发'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";
    }

1 个答案:

答案 0 :(得分:0)

是否调用了Upload()方法?看一下代码,我希望调用Sometask()而不是Upload()方法。当单击按钮时,jQuery代码调用.post,这应该消除正常的表单发布。如果未调用Sometask(),则需要将[HttpPost]属性添加到Sometask()方法中。

请注意,出于安全原因,无法从Javascript上传文件。