如何获取jquery文件上传以回发[httpPost] index.cshtml()以外的指定操作?

时间:2012-04-03 00:21:42

标签: jquery asp.net-mvc asp.net-mvc-3 file-upload multifile-uploader

我正在使用jquery文件上传器(每个blueimp)而且我想知道如何将回发指向特定的http帖子而不是index.cshtml(默认情况下post会转到index.cshtml)?< / p>

例如,在调用Home / Bulk时......然后在选择文件后,回发默认为[httppost] index.cshtml()...如何将其指向[httppost] bulk.cshtml()? THX!

查看(Bulk.cshtml):

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script src="@Url.Content("~/Scripts/jquery.ui.widget.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.iframe-transport.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.fileupload.js")" type="text/javascript"></script>


@using (Html.BeginForm("Bulk", "Home"))  // I want this to direct back to httppost:bulk handler
{
<input id="fileupload" type="file" name="files" multiple="multiple"/>
}

控制器:

public class HomeController : Controller
{
    public ActionResult Index()
    {
        return View();
    }

    [HttpPost]
    public ActionResult Index(IEnumerable<HttpPostedFileBase> files)
    {
        foreach (var file in files)
        {
            var filename = Path.Combine(Server.MapPath("~/App_Data"), file.FileName);
            file.SaveAs(filename);
        }
        return View();
    }

    public ActionResult Bulk()
    {
        return View();
    }

    [HttpPost]
    public ActionResult Bulk(IEnumerable<HttpPostedFileBase> files)
    {
        foreach (var file in files)
        {
            var filename = Path.Combine(Server.MapPath("~/App_Data"), file.FileName);
            file.SaveAs(filename);
        }
        return View();
    }

}

2 个答案:

答案 0 :(得分:5)

您可以在设置插件时使用url属性来指示您希望其提交的操作:

$('#fileupload').fileupload({
    url: 'home/bulk',
    done: function (e, data) {
    }
});

答案 1 :(得分:1)

你的意思是你想在帖子后重定向吗?使用Post-Redirect-Get模式也许是这样的。注意不同的回报。

[HttpPost]
public ActionResult Bulk(IEnumerable<HttpPostedFileBase> files)
{
    foreach (var file in files)
    {
        var filename = Path.Combine(Server.MapPath("~/App_Data"), file.FileName);
        file.SaveAs(filename);
    }
    return RedirectToAction("Bulk");
}

修改

啊,我明白了。这很可能是因为您的html表单设置不正确。正如Darin所说,你可以使用jQuery。但是,如果你想使用html帮助器,你可以这样做:

@using (Html.BeginForm("Bulk", "Home", FormMethod.Post, new { enctype = "multipart/form-data" }))

multipart / form-data非常重要,因为它有助于将文件发送到控制器。