結合HttpPostedFileBase Ajax.BeginFormを使用して
-
21-09-2019 - |
質問
私は、モデルと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のフォームのプラグインですファイルフィールドを含むフォーム送信ます。
他のヒント
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" を使用してファイルをアップロードすることができます。