質問

私は、モデルとHttpPostedFileBaseのデフォルトのバインダーを使用してファイルのアップロードを結合する形態を持っています。

Html.BeginFormを使用する場合は、罰金に動作します()。私はそれに応じてパラメータを変更)(Ajax.BeginFormでこれを置き換えるのでしかし、私はAJAXを使用して同じ操作を実行したかっます。

モデルが正常に結合し、しかし私はHttpPostedFileBaseにバインドへのファイルのアップロードを取得することはできません。

このバインドモデルおよびファイルのアップロード:

<% using (Html.BeginForm("MapUpdateColumns", "RepositoryAdmin", FormMethod.Post, new { id = "UpdateDataset", enctype = "multipart/form-data" })) {%>

これはのみのモデルをバインドします:

<% using (Ajax.BeginForm("MapUpdateColumns", "RepositoryAdmin", new AjaxOptions { UpdateTargetId = "columnMappings" }, new { id = "UpdateDataset", enctype = "multipart/form-data" })) {%>

コントローラのアクション

public ActionResult MapUpdateColumns(DatasetViewModel model, HttpPostedFileBase sourceFile)

これが可能であるべきであり、どのようなので、もし私が間違っているのでしょうか?おかげます。

役に立ちましたか?

解決

あなたはAJAXを使用してファイルをアップロードすることはできません。これを達成する1つの方法は、AJAX呼び出しをシミュレートし、実際のファイルのアップロードを実行したり、フラッシュを使用する非表示のiframeを使用することです。ここでは非常に素晴らしいが透過的にAをajaxifyingすることのできる非表示のiframeを使用して jQueryのフォームのプラグインですファイルフィールドを含むフォーム送信ます。

他のヒント

それは可能であるが、答えはここにあります:

https://stackoverflow.com/a/13522052/1067149

私はそれを自分自身を行なったし、それが動作保証されています。

あなたのタグを入力

ADDのid="file"

であなたのActionResult PARAMETER HttpPostedFileBase「ファイル」名とビュータグ名と同じでなければなりません。

        [HttpPost]
        [ValidateAntiForgeryToken]
        public ActionResult Create(tbl_products tbl_products,HttpPostedFileBase file)
        {
            if (ModelState.IsValid)
            {
                tbl_products.phototype = file.ContentType;
                tbl_products.photo =new byte[file.ContentLength ];
                file.InputStream.Read(tbl_products.photo,0, file.ContentLength);

                if(obj.insert(tbl_products))
                {
                return RedirectToAction("Index");
                }
                else
                {
                    return new HttpStatusCodeResult(HttpStatusCode.Forbidden);
                }   
            }

            return View(tbl_products);
        }

ITが私の作品

はい、私も同意するものとします。あなたは間違いなくAjaxOptionsオブジェクトに '「Ajax.BeginForm'.Add' のenctype = "multipart / form-data" を使用してファイルをアップロードすることができます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top