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 回答