我有一个模型页面,我想发送到控制器与其他文件(文件不在模型中)。到目前为止,我提交的一切正常,但因为我在部分我想要发送模型和文件到控制器,并保持在同一页面上。如果上传成功,我还想获得对页面的响应,这样我就可以处理表单元素。这是我有:防止页面重新加载@using Html.BeginForm提交asp.net MVC
查看
@model Test.Controllers.HomeController.MyClass
@{
ViewBag.Title = "Index";
}
@using (Html.BeginForm("Save", "Home", FormMethod.Post, new { role = "form", enctype = "multipart/form-data" }))
{
@Html.AntiForgeryToken()
@Html.TextBoxFor(m=>m.Number)
<input id="file" name="file" type="file" multiple>
<button class="btn btn-primary center-block" id="saveButton">
Save <span class="glyphicon glyphicon-ok" style="color: white;" type="submit"></span>
</button>
}
控制器
// GET: Home
public ActionResult Index()
{
return View();
}
[HttpPost]
[ValidateAntiForgeryToken]
public virtual JsonResult Save (MyClass model, List<HttpPostedFileBase> file)
{
return Json(true);
}
public class MyClass
{
public int Number { get; set; }
}
我想响应(JSON或别的东西),完成后保存这样我就可以重新加载一些数据网格和这样的。如果我尝试发送表单与ajax(form.serialize)我的文件始终为空。任何帮助表示赞赏
使用AJAXBeginForm而不是BeginForm并使用updatecontrol更新Json数据。 –
我的文件没有达到控制器,如果我使用Ajax.BeginForm,我在模型中的一切都很好。 –
我添加了下面的答案,能够在我的机器上上传文件。 –