1

我正在使用 jquery 文件上传器(每个 blueimp),我想知道如何将回发定向到 index.cshtml 以外的特定 http 回发(默认情况下,post 将发送到 index.cshtml)?

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

查看(批量.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();
    }

}
4

2 回答 2

5

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

$('#fileupload').fileupload({
    url: 'home/bulk',
    done: function (e, data) {
    }
});
于 2012-04-03T05:55:33.940 回答
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 很重要,因为它有助于将文件发送到控制器。

于 2012-04-03T01:06:55.500 回答