私はこれを長い間探していましたが、まだ行き詰まっています。ユーザーがドキュメントをアップロードして追加情報を提供できるアップロード コントロールが必要です。
以前はアップロード コントロールなしでこれを行う必要があったため、ユーザーからコントローラーへのすべての入力を提供する ajax.beginform を取得し、onsucces 関数を使用してポップアップを閉じるので、これは次のようになります。 :
見る:
@using (Ajax.BeginForm("Save", "Documents", new AjaxOptions { HttpMethod = "Post", OnSuccess = "CloseDialog" }, new { @class = "form-inline", id = "FormId" }))
{
@Html.Label("Description", "Description")
<div class="span3">
@Html.TextBoxFor(m => m.Description)
</div>
}
そこに Html.BeginForm を追加しようとしましたが、ネストされたフォームを使用できないことがわかったので、これを削除しました。
私のコントローラーには次のものがあります:
public PartialViewResult Index(string description)
{
var model = new DocumentsModel{ Description = description};
return PartialView(model);
}
[HttpPost]
public ActionResult UploadFile(HttpPostedFileBase file, string description)
{
if (file != null && file.ContentLength > 0)
{
var fileName = Path.GetFileName(file.FileName);
var path = Path.Combine(Server.MapPath(@"D:\Documentds\"), fileName);
file.SaveAs(path);
}
return RedirectToAction("Index", new { description = description });
}
もちろん、html.beginform が機能しないため、このコントローラーアクションも機能しません。だから私の質問は、html.beginform を使用せずにこれを行う方法ですか?