我已经为此寻找了很长时间,但我仍然卡住了,我需要一个上传控件,用户可以在其中上传文档并提供其他信息。
我之前必须在没有上传控件的情况下执行此操作,所以我要做的是得到一个 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 的情况下做到这一点?