1

jqueryファイルアップローダー(blueimpごと)を使用していますが、index.cshtml以外の特定のhttpポストバックにポストバックを送信する方法を知りたいですか(ポストはデフォルトでindex.cshtmlに送信されます)?

たとえば、Home / Bulkを呼び出すと、ファイルを選択した後、ポストバックはデフォルトで[httppost] index.cshtml()になります... [httppost] bullk.cshtml()に転送するにはどうすればよいですか?どうも!

ビュー(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();
    }

}
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 に答える