一,Form包含文件类(单选文件)

<form id="ImgForm" method="POST" enctype="multipart/form-data" name="ImgForm" action="/From/SubmitForm">
<input type="file" name="fileData" >
<br />
<input type="text" name="name" />
<br />
<input type="password" name="password" />
<br />
<input type="submit" value="上传" />
</form>

C#

[HttpPost]
public void SubmitForm(HttpPostedFileBase fileData, FormCollection collection)
{
string name = collection["name"];
string passowrd = collection["password"];
string image = fileData.FileName.ToString();
string imageGuid = Guid.NewGuid().ToString() + ".jpg";
string path = System.Web.HttpContext.Current.Server.MapPath("~/QRimage/") + imageGuid;//只是用于演示简单的上传删除方法
fileData.SaveAs(path);
string deletePath = "http://wx115.cnpsim.com/QRimage/" + imageGuid;
var img = new FileInfo(path);
if (img.Exists) img.Delete();
}

  

二,Form包含文件类(多选文件)

<div>
<form id="ImgForm" method="POST" enctype="multipart/form-data" name="ImgForm" action="/From/SubmitForm">
<input type="file" name="fileData" multiple />
<br />
<input type="text" name="name" />
<br />
<input type="password" name="password" />
<br />
<input type="submit" value="上传" />
</form>
</div>

 C#

 [HttpPost]
public void SubmitForm(HttpPostedFileBase[] fileData, FormCollection collection)
{
string name = collection["name"];
string passowrd = collection["password"];
foreach (var file in fileData)
{
string image = file.FileName.ToString();
string imageGuid = Guid.NewGuid().ToString() + ".jpg";
string path = System.Web.HttpContext.Current.Server.MapPath("~/QRimage/") + imageGuid;//只是用于演示简单的上传删除方法
file.SaveAs(path);
string deletePath = "http://wx115.cnpsim.com/QRimage/" + imageGuid;
var img = new FileInfo(path);
if (img.Exists) img.Delete();
}
}

二,Form包含文件类(多选文件多Input file)

<div>
<form id="ImgForm" method="POST" enctype="multipart/form-data" name="ImgForm" action="/From/SubmitForm">
<input type="file" name="fileData" multiple />
<br />
<input type="file" name="fileData" multiple />
<br />
<input type="file" name="fileData" multiple />
<br />
<input type="text" name="name" />
<br />
<input type="password" name="password" />
<br />
<input type="submit" value="上传" />
</form>
</div>

C#

  [HttpPost]
public void SubmitForm(FormCollection collection)
{
string name = collection["name"];
string passowrd = collection["password"];
for(int i=;i<Request.Files.Count;i++)
{
HttpPostedFileBase f = Request.Files[i];
string nwame = f.FileName.ToString();
} }

总结:以上三种form提交文件的方式均可用Request.Files接受;

二

非表单方式的提交

第一种(不能直接传递文件可以但是有解决办法FormData,传递对象需要转化为Json)

参考链接:http://www.cnblogs.com/tylerdonet/p/3520862.html

参考链接:http://www.cnblogs.com/MC-zhouyongli/p/4789620.html

 $.ajax({
type: "post",
url: "/From/SubmitForm",
dataType: "json",
data: { page: sumLoad, filt: filter },
//async: false,//关闭异步
success: function (data) {
if (data.length > )
{
$("#ImageDiv").append('<h4 id="imagealert">图片正在加载中请稍等...</h4>')
}
$.each(data, function (key, value) {
var img = new Image();
img.src = value;
img.onload = function () {
var size = img.width + 'x' + img.height;
console.log(size)
$("#ImageDiv").append('<div>' +
'<a href=' +
'"' + value + '"' +
'data-size=' +
'"' + size + '"' +
'>' +
'<img class="WorkOrderimageOld" style="height:40px;width:40px;" src=' +
'"' + img.src + '"' +
'>' +
'</a>' + '</div>'
)
};
}
);
},
complete:function()
{
// $("#ImageDiv").text("图片已加载完成");
},
beforeSend: function () {
//$("#ImageDiv").text("图片加载中");
},
error: function () {
// $("#ImageDiv").text("图片加载异常");
},
});

C#

 public ActionResult WorkOrderJson(int page = , string filt="全部")
{
..........
return Json(list, JsonRequestBehavior.AllowGet);
}

第二种(已传递文件为主,不能一次传递多个文件可以添加for循环模拟上传多个文件)

参考链接:http://www.cnblogs.com/snowinmay/archive/2013/07/17/3195072.html

function SaveImage()
{
var Savefiles=document.getElementById("inputFile").files;
var formData = new FormData();
formData.append('file', Savefiles[n]);
var oReq = new XMLHttpRequest();
oReq.open("POST", "/WorkOrder/ImageUpload", false);//第三个参数用于控制同步异步 true为异步,false为同步
oReq.onload = function (oEvent) {
if (oReq.readyState == 4) {
if (oReq.status == 200 || oReq.status == 0) {
var result = oReq.responseText;
//var json = eval("(" + result + ")");
if(result=="OK")
{
Backinfo[m] = "OK";
$("#ImageDiv").text("第"+m+"张图片已上传");
} }
}
};
oReq.send(formData);
}

C#

public string  ImageUpload()
{
HttpPostedFileBase file = Request.Files[];
string Checkerror = CheckImg(file);//自定义检查文件类型以及大小等
AppLog.Info("检查图片信息结果:" + Checkerror);
if (Checkerror == "ok")
{
return "OK";
}
else
{
return "NO";
} }

第三种jQuery File Upload-jQuery上传插件(查看资料功能比较强大但为用上)

实例地址:http://www.jq22.com/jquery-info230

ASP.NET MVC 与Form表单交互的更多相关文章

  1. asp.net.mvc 中form表单提交控制器的2种方法和控制器接收页面提交数据的4种方法

    MVC中表单form是怎样提交? 控制器Controller是怎样接收的? 1..cshtml 页面form提交 (1)普通方式的的提交

  2. MVC中Form表单的提交

    概述 Web页面进行Form表单提交是数据提交的一种,在MVC中Form表单提交到服务器.服务端接受Form表单的方式有多种,如果一个Form有2个submit按钮,那后台如何判断是哪个按钮提交的数据 ...

  3. ASP.NET MVC Jquery Validate 表单验证的多种方式

    在我们日常开发过程中,前端的表单验证很重要,如果这块处理不当,会出现很多bug .但是如果处理的好,不仅bug会很少,用户体验也会得到很大的提升.在开发过程中我们可以不借助 JS 库,自己去手写 JS ...

  4. [转]ASP.NET MVC Jquery Validate 表单验证的多种方式介绍

    在我们日常开发过程中,前端的表单验证很重要,如果这块处理不当,会出现很多bug .但是如果处理的好,不仅bug会很少,用户体验也会得到很大的提升.在开发过程中我们可以不借助 JS 库,自己去手写 JS ...

  5. Asp,Net里的Form表单

    1.Form表单是页面与Web服务器交互过程中最重要的信息来源. 2.<form action="传到哪个页面的网站地址" method="post和get 两种方 ...

  6. ASP.NET MVC 3 之表单和 HTML 辅助方法(摘抄)

    ——选自<ASP.NET MVC3 高级编程(第5章) 孙远帅 译> 第5章 表单和HTML辅助方法 本章内容简介: * 理解表单 * 如何利用HTML辅助方法 * 编辑和输入的辅助方法 ...

  7. asp.net 登陆验证 Form表单验证的3种方式 FormsAuthentication.SetAuthCookie;FormsAuthentication.RedirectFromLoginPage;FormsAuthenticationTicket

    我们在登陆成功后,使用下面的3种方法,都是同一个目的:创建身份验证票并将其附加到 Cookie, 当我们用Forms认证方式的时候,可以使用HttpContext.Current.User.Ident ...

  8. mvc中form表单提交的几种形式

    第一种方式:submit 按钮 提交 <form action="MyDemand" method="post"> <span>关键字: ...

  9. asp.net中通过form表单submit提交到后台的实例

    前台<body>中的代码: <body> <div id="top"> </div> <form id="login ...

随机推荐

  1. fafu 1568 Matrix(二分匹配+二分)

    Description:   You are given a matrix which <= n <= m <= ). You are supposed to choose n el ...

  2. 安装Linux系统到u盘

    第一步:首先插入u盘到电脑主机usb接口处(建议插入到主机箱后置的usb接口).然后打开UltraISO软件,再打开选择须要写入u盘的Ubuntu 10.04或者其它版本号的Linux系统的iso镜像 ...

  3. C#核编之System.Console类

    顾名思义,Console类封装了基于控制台的输入输出和错误流的操作,下面列举一些System.Console类常用的成员的,这些成员能为简单的命令行程序添加一些"情趣",例如改变背 ...

  4. UVA 806 Spatial Structures

    题意: 如果某一大区域所有色块颜色是相同的,那么这一个大区域就算作一块,如果不同,则将其划分成四个小区域,然后重复上述步骤递归进行直到所有区域的颜色相同为止.然后根据上面划分的区域建树,小区域作为大区 ...

  5. OC-类

    1.关于头文件 #include <stdio.h>     #import <Foundation/Foundation.h> 区别:#import指令导入更快更有效率.#i ...

  6. javascript 正则表达式代码

    正则表达式用于字符串处理.表单验证等场合,实用高效.现将一些常用的表达式收集于此,以备不时之需. 匹配中文字符的正则表达式: [\u4e00-\u9fa5] 评注:匹配中文还真是个头疼的事,有了这个表 ...

  7. hdu2243考研路茫茫——单词情结

    Problem Description 背单词,始终是复习英语的重要环节.在荒废了3年大学生涯后,Lele也终于要开始背单词了. 一天,Lele在某本单词书上看到了一个根据词根来背单词的方法.比如&q ...

  8. strutr2运行流程

    1. 请求发送给 StrutsPrepareAndExecuteFilter 2. StrutsPrepareAndExecuteFilter 询问 ActionMapper: 该请求是否是一个 St ...

  9. 5.7 cm server-agent 会出现无法启动

    异常信息如下: 离线安装cloudera-scm-agent5.7的Unable to create the pidfile问题 在离线安装Cloudera Manager启动agent出现了如下异常 ...

  10. linux 系统分区方案建议

    前言: 以前初识Linux时,对Linux系统安装时分区的选择,一点都不了解,导致几次没法进行下一步安装,因此就静下心来,专门拿出时间研究了研究这方面的知识: 以下内容就是以前通过研究Linux安装过 ...