更好的方法是使用jquery表单插件。
这是示例:
Html.BeginForm
@using (Html.BeginForm("YourAction", "YourController")){ @Html.AntiForgeryToken() <input type="file" name="files"><br> <input type="submit" value="Upload File to Server">}行动方法
[HttpPost] [ValidateAntiForgeryToken] public void YourAction(IEnumerable<HttpPostedFilebase> files) { if (files != null) { foreach (var file in files) { // Verify that the user selected a file if (file != null && file.ContentLength > 0) { // extract only the fielname var fileName = Path.GetFileName(file.FileName); // TODO: need to define destination var path = Path.Combine(Server.MapPath("~/Upload"), fileName); file.SaveAs(path); } } } }进度条
<div > <div >0%</div></div>
jQuery和表单脚本
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7/jquery.js"></script><script src="http://malsup.github.com/jquery.form.js"></script><script>(function() {var bar = $('.progress-bar');var percent = $('.progress-bar');var status = $('#status');$('form').ajaxForm({ beforeSend: function() { status.empty(); var percentVal = '0%'; bar.width(percentVal) percent.html(percentVal); }, uploadProgress: function(event, position, total, percentComplete) { var percentVal = percentComplete + '%'; bar.width(percentVal) percent.html(percentVal); }, success: function() { var percentVal = '100%'; bar.width(percentVal) percent.html(percentVal); }, complete: function(xhr) { status.html(xhr.responseText); }});})(); </script>更新中…
两次遇到调用操作方法问题的人都归功于Ajax.BeginForm,只需将其转换为Html.BeginForm()。



