MVC 5.0(or5.0↓) Ajax.BeginForm 异步上传附件问题,答案是不能的!
MVC 5.0(or5.0↓) Ajax.BeginForm 异步上传附件问题,答案是不能的!
(请注意我这里说的异步!)
来看一下下面这段一步提交file的代码
//前台 .cshtml 文件 <script src="~/jquery.unobtrusive-ajax.js"></script>
@using (Ajax.BeginForm("upLoadAsync", "UploadFile",
new AjaxOptions {
HttpMethod = "Post",
OnSuccess = "success"
}
, new { enctype = "multipart/form-data" }
))
{
<input type="file" id="fileupload" name="Upload" />
<input type="submit" value="上传" id="btn">
} //C#代码
public string upLoadAsync()
{
HttpPostedFileBase file = Request.Files["Upload"];
HttpPostedFileBase file = Request.Files[0];
//其余代码省略
//......
}
当debug到这里,你们就发现不管是 Request.Files["Upload"]亦或是 Request.Files[0] 都不会取到文件流。
这就是我要说的,当使用Ajax.BeginForm(jquery.unobtrusive-ajax.js) 异步上传是不可行的,因为文件流不会被C#代码读取
但是并不影响 Ajax.BeginForm(jquery.unobtrusive-ajax.js) 异步提交表单的特性。
那我我们应该如何异步提交表单呢?
利用 $("#formID").ajaxSubmit({});这个方法异步提交表单并且上传文件。
//前台 .cshtml 文件
<script src="~/jquery.form.js"></script>
<form id="formID" method="post" enctype="multipart/form-data">
@Html.Hidden("yearNow1", @ViewBag.yearNow as string)//输入一些要提交表单的值
<input type="file" id="fileupload" name="Upload" />
<input type="button" value="上传" id="btn">//这里用button代替submit
</form>
<script type="text/javascript">
$("#btn").click(function () {
$("#formID").ajaxSubmit({
url: "@Url.Action("upLoadAsync", "UploadFile")",
type: "post",
success: function (data) {
//......
},
error: function (aa) {
alert(aa);
}
});
});
//C#代码
public string upLoadAsync()
{
HttpPostedFileBase file = Request.Files["Upload"];
HttpPostedFileBase file = Request.Files[0];
//其余代码省略
//......
}
当debug到这里,你们就发现不管是 Request.Files["Upload"]亦或是 Request.Files[0] 都可以取到文件流。
当controller返回值也可以成功进入seccess方法中。
请注意我代码中标红的位置,以防遗漏导致一直debug无果问题!
总结一下:
1、MV5 5.0中异步提交表单方法两种:Ajax.BeginForm(new AjaxOptions:post) 和 $("#formID").ajaxSubmit({})
2、MVC 5.0中异步提交表单上传文件一种:$("#formID").ajaxSubmit({})
MVC 5.0(or5.0↓) Ajax.BeginForm 异步上传附件问题,答案是不能的!的更多相关文章
- Ajax.BeginForm 异步上传附件 替代方案
一:问题描述 含有文件信息表单内容,想通过异步上传到服务器,但是使用Ajax.BeginForm上传时,后台无法获取文件信息 二:解决方案 通过 $.ajaxFileUpload 可以实现文件及 ...
- 关于MVC Ajax.BeginForm()异步上传文件的问题
问题描述: 如果用juqery原生的异步上传方式,只要如下方法即可 $.ajax({ type: "GET", url: "test.json", data: ...
- 文件的上传(表单上传和ajax文件异步上传)
项目中用户上传总是少不了的,下面就主要的列举一下表单上传和ajax上传!注意: context.Request.Files不适合对大文件进行操作,下面列举的主要对于小文件上传的处理! 资源下载: 一. ...
- 普通文件的上传(表单上传和ajax文件异步上传)
一.表单上传: html客户端部分: <form action="upload.ashx" method="post" enctype="mul ...
- 文件的上传(1)(表单上传和ajax文件异步上传)
文件的上传(表单上传和ajax文件异步上传) 项目中用户上传总是少不了的,下面就主要的列举一下表单上传和ajax上传!注意: context.Request.Files不适合对大文件进行操作,下面列举 ...
- 使用FormData实现ajax文件异步上传
1.传统的web开发文件上传一般是基于form表单的文件上传,同步的方式,用户体验差,可控性也差 2.异步上传的实现 有以下方式 2.1 借助浏览器插件 一般需要安装一些类似flash的插件 这种方 ...
- jquery 通过ajax FormData 对象上传附件
之前上传附件都是用插件,或者用form表单体检(这个是很久以前的方式了),今天突发奇想,自己来实现附件上传,具体实现如下 html: <div> 流程图: <input id=& ...
- Ajax图片异步上传并回显
1.jsp页面 <td width="20%" class="pn-flabel pn-flabel-h"></td> <td w ...
- ajaxfileupload异步上传附件添加參数的方法
1.js文件 // JavaScript Document jQuery.extend({ createUploadIframe: function(id, uri) { //create frame ...
随机推荐
- Plupload文件上传组件使用API
Plupload有以下功能和特点: 1.拥有多种上传方式:HTML5.flash.silverlight以及传统的<input type=”file” />.Plupload会自动侦测当前 ...
- EasyGUI基础教程
安装EasyGUI 教程http://www.cnblogs.com/zym941001/p/5323319.html Helloworld import easygui as g g.msgbox( ...
- 自定义Spring event
通过Spring自定义event 首先我们定义我们的event类 package com.hyenas.spring.custom.event; import org.springframework. ...
- QQ互联登录回调路径错误redirect uri is illegal(100010)
QQ互联登录设置的路径设置
- CSS hacker(兼容IE6、7、8)
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">这行代码是永远以最新的 ...
- Ubuntu 15.04 无损扩展分区(目录)容量的方法 (无需格式化, 文件不丢失)
源 起 用了一段时间Ubuntu,碰到了UBuntu磁盘空间不足的问题, 最初我只给Ubuntu分配了30个G的空间, 昨天试用了一下VirtualBox安装了一个xp虚拟系统,用以解决Ubuntu下 ...
- 每天一道LeetCode--434. Number of Segments in a String
Count the number of segments in a string, where a segment is defined to be a contiguous sequence of ...
- A*算法的实现
#include<cstdio> #include<cstdlib> #include<cstring> #include<iostream> #inc ...
- Linux下DNS服务器的基本搭建
技术交流群:286866978 安装与配置 1. 装载光驱 2. 卸载光驱 3. 将安装包放在合适的文件夹并解压(有的更换光盘需要重新装载) 4. 安装 5. 重定向配置文件 6. 配置named.c ...
- 谷歌浏览器Chrome不再支持showModalDialog的解决办法
问题重现 弹出窗口编码: JavaScript 0 1 2 3 4 5 6 7 var obj = new Object(); var retval = window.showModalDia ...