1

我知道这已经讨论过很多次了。

我基本上希望在我看来更新文件的可能性。该文件必须映射到控制器期望的模型:

public ActionResult Create(Company company)
{
    //Do something with the received model
}

该模型:

public class Company
{
    public int Id { get; set; }
    public HttpPostedFileBase PictureUpload { get; set; }
    ...
}

这工作没有任何问题。现在我想通过 AJAX 发送我的表单数据,包括文件。因此,我认为我正在使用它:

@using (Ajax.BeginForm("Create", "Company", null, new AjaxOptions { HttpMethod = "Post", OnSuccess = "ajaxOnSuccess", OnFailure = "alert('Error message.');" }, new { @class = "ym-form", enctype = "multipart/form-data" }))

这基本上可以工作,但是文件上传不起作用(据我所知,ajax 无法访问该文件,因此无法发送)。

我想要这个问题的最佳解决方案,而无需修改我的后端(控制器/模型)。

例如。我读了这篇文章: http ://ajeeshms.in/Blog/Article/1/upload-files-using-ajax-in-asp-mvc

它提供了两种不错的可能性,但我必须修改后端,因为据我所知,在我的模型中自动映射到 HttpPostedFileBase 类型不再可能了。

我不介意为我的视图使用任何工作插件或使用仅受新浏览器支持的技术。

4

4 回答 4

1

试试这个代码

//添加对form.js的引用

<script src="http://malsup.github.com/jquery.form.js"></script>

@using (Html.BeginForm("Create", "Company", FormMethod.Post, new { @enctype ="multipart/form-data",@id="formid" }))
{

}

//Javascript code

<script type="text/javascript">

$('#formid').ajaxForm(function (data) {

});

</script>

这将作为 ajax 提交工作。

//您可以在此处获取有关 AjaxForm 的更多详细信息

于 2013-09-16T15:53:18.823 回答
0

我是根据 Demian Flavius 的回答做出的: How to do a ASP.NET MVC Ajax form post with multipart/form-data?

基本上,它是新的 JavaScript 的 FormData 对象,可以轻松地使用 ajax 进行上传,如您提到的文章中所述。

于 2013-04-11T11:06:11.297 回答
0

请试试这个@using (Html.BeginForm("Create", "Company", FormMethod.Post, new { id = "ym-form", enctype="multipart/form-data" }))

于 2013-04-10T12:18:49.513 回答
-1

我认为您不能使用 AJAX 上传文件。实现此目的的一种方法是使用隐藏的 iframe。试试这个jQuery Form 插件Telerik 文件控件

也请参考这个链接

于 2013-04-11T09:30:16.770 回答