Как получить jquery File Upload для отправки заданного действия, отличного от [httpPost] index.cshtml ()? - PullRequest
1 голос
/ 03 апреля 2012

Я использую загрузчик файлов jquery (на blueimp), и мне интересно, как я могу направить обратную передачу на указанный HTTP-пост, отличный от index.cshtml (сообщение по умолчанию идет в index.cshtml)?

Например, при вызове 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 ]

5 голосов
/ 03 апреля 2012

Вы можете использовать свойство url при настройке плагина, чтобы указать, какое действие вы хотите отправить:

$('#fileupload').fileupload({
    url: 'home/bulk',
    done: function (e, data) {
    }
});
1 голос
/ 03 апреля 2012

Вы имели в виду, что хотите перенаправить после публикации? Возможно, что-то подобное, используя шаблон 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");
}

EDIT

Ах, понятно. Это наиболее вероятно, потому что ваша HTML-форма не настроена правильно. Как предполагает Дарин, вы можете использовать jQuery. Но если вы хотите использовать помощник html, вы можете сделать это:

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

Данные multipart / form-data важны, поскольку они позволяют отправлять файлы на контроллер.

...