文件输入未在ASP.NET Ajax.BeginForm中发布。为什么?

文件输入未在ASP.NET Ajax.BeginForm中发布。为什么?,ajax,asp.net-mvc,file-upload,ajax.beginform,Ajax,Asp.net Mvc,File Upload,Ajax.beginform,让我先弄清楚我没问什么。我可以看到,本机ASP.NET MVCAjax.BeginForm不处理来自Ajax表单post的发布文件。我看到的一些答案似乎证实了这一事实,并通过jQuery插件等提供了一系列解决方法: 我不是在问它是否能完成,我也不是在问解决办法。我希望有人能解释为什么不能这样做 如何在MVC中处理AJAX表单post,使文件输入不会post?我猜我一直认为它是在一个基本的层次上处理的,就像一篇完整的文章一样,但是使用了一些javascript修剪,阻止了整个页面的重新加载。显

让我先弄清楚我没问什么。我可以看到,本机ASP.NET MVC
Ajax.BeginForm
不处理来自Ajax表单post的发布文件。我看到的一些答案似乎证实了这一事实,并通过jQuery插件等提供了一系列解决方法:

我不是在问它是否能完成,我也不是在问解决办法。我希望有人能解释为什么不能这样做


如何在MVC中处理AJAX表单post,使文件输入不会post?我猜我一直认为它是在一个基本的层次上处理的,就像一篇完整的文章一样,但是使用了一些javascript修剪,阻止了整个页面的重新加载。显然情况并非如此。通过javascript提交的表单是否类似于jQuery的
$(“#form”).submit()
?封面下发生了什么事?

我还不清楚。标准HTTP POST通常是url编码的字符串,或多部分/表单数据MIME类型。这两种类型也可以归结为文本。。。最终可以对二进制数据进行字符串编码。我不太确定AJAX请求使用XML类型数据是否普遍正确。我知道很多客户端代码都是用JSON与服务器对话的。尽管如此,我还是希望看到一个写得好、引用得好的答案,讨论AJAX post和标准HTTP post之间的具体区别。感谢您的回复。上述评论是对另一条评论的回应,该评论已被提出,随后被删除。该评论基本上说AJAX调用不能处理文件,因为AJAX调用是XML内容类型,XML不能包含二进制数据。我不知道哪部分是真的,如果有的话。我留下我的回应。。。也许这暴露了我更多的(错误的)假设?我和你一样疑惑了一段时间,仍然没有答案。在我的研究中,我特别发现了一条引起我注意的评论:Dustin Horne的文章()的第一段说:“……这是由于浏览器安全限制和沙箱……”。当然,这不是我们正在寻找的答案,但可能是一个初步线索。也许这对你有所启示…谢谢你的评论和链接。关于安全限制和沙箱的事情是我见过的最接近于解释的,即使它不是完整的技术答案。