0

私はこれを長い間探していましたが、まだ行き詰まっています。ユーザーがドキュメントをアップロードして追加情報を提供できるアップロード コントロールが必要です。

以前はアップロード コントロールなしでこれを行う必要があったため、ユーザーからコントローラーへのすべての入力を提供する 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 を使用せずにこれを行う方法ですか?

4

1 に答える 1

0

フォーム内にファイルをアップロードする必要があり、uploadfile を呼び出すフォームの enctype="multipart/form-data" プロパティも必要です。それは一つの問題かもしれません。

また、JavaScript を使用して、フォームをネストしたりデザインを維持したりすることなく、ページの別の部分から必要なフォームを送信することもできます。

于 2012-10-10T01:00:30.493 に答える