文件上传与asp.net的MVC阿贾克斯(File upload with ajax in asp.

2019-08-21 05:16发布

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

我基本上要的可能性在我看来,以更新文件。 这个文件被映射到控制器期望的模型:

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没有访问该文件,因此它不能被作为远)的文件上传不起作用。

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

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

它提供了两个漂亮的可能性,但我不得不因为就修改后台,我看到了自动映射到在我的模型的HttpPostedFileBase类型是不可能的了。

我不介意使用任何插件的工作对我的看法或者使用仅由新的浏览器支持的技术。

Answer 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>

这将作为阿贾克斯提交。

//你可以在给ajaxForm更多细节在这里



Answer 2:

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



Answer 3:

我认为你不能上传文件的AJAX。 实现这一目标的一个方法是使用一个隐藏的iframe。 试试这个jQuery的表格插件和Telerik的文件控制

请参考这个链接也。



Answer 4:

我已根据从德棉弗拉菲乌斯这样的回答: 如何做一个ASP.NET MVC Ajax表单后用的multipart / form-data的?

基本上它是一个新的JavaScript的FORMDATA对象,很容易让使用Ajax上传作为你提到的文章。



文章来源: File upload with ajax in asp.net mvc