Html.BeginForm("AddImg","admin",FormMethod.Post,new { @enctype="multipart/form-data"}
用以上MVC非AJAX能获取其中的<input type="file" id="f1" name="f1" />
换成
Ajax.BeginForm("AddImg","", new AjaxOptions { UpdateTargetId = "myimg" }, new { @enctype = "multipart/form-data" })
之前就没办法获取<input type="file" id="f1" name="f1" />
了,不知道是不是哪里写错了,请高手指点!
------解决方案--------------------------------------------------------
Ajax.BeginForm本来就是读取不了file,安全性问题,如同你在WEBFORM UpdatePanel中一样,无法使用file
你可以试试jquery.form.js
------解决方案--------------------------------------------------------
js代码处理
- JScript code
var options = { dataType: 'json', beforeSubmit: _this.showRequest, //提交前处理 error: _this.showError, //错误处理 success: _this.showResponse //提交成功的处理 }; $("#myForm").ajaxForm(options);
------解决方案--------------------------------------------------------
纯ajax没有办法执行文件上传
你要上传文件必须有一个隐藏的frame 通过这个子frame上传 然后向子写入js代码来通知页面
前台的代码:
- HTML code
<div id="UpLoad_Show"></div><script type="text/javascript"> function UpLoadPictureShow(id, ifVertically) { var value = $("#pictures").val(); var img; if (ifVertically == "Vertically") { img = "<img alt='' src='/File/DownLoad/" + id + "' width='90px' height='120px' /> "; } else { img = "<img alt='' src='/File/DownLoad/" + id + "' width='120px' height='90px' /> "; } $("#UpLoad_Show").append(img); if (value == 0) { value = id; } else { value += "," + id; } $("#pictures").val(value); }</script><div> <form action="/File/UpLoadPicture" method="post" enctype="multipart/form-data" target="UpLoad_Do"> <input name="File1" type="file" /> <input type="submit" value="上传" /> </form> <iframe id="UpLoad_Do" src="../Child/UpLoad.htm" style="display:none"></iframe></div>