一,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. UIScrollView 与 UIPageView 的联合使用

       @interface ViewController : UIViewController<UIScrollViewDelegate> { UIScrollView * scrollV ...

  2. SQL Common Sense 碎片一

    1.关于时间 SELECT GETDATE() SELECT DATEPART(d,'2014-05-20 14:20:55.347') SELECT DATEDIFF(d,'2014-05-20 1 ...

  3. 读书笔记-Coding faster(英文版)

    读书笔记-Coding faster(英文版) Getting More Productive with Microsoft visual Studio Author: Zain Naboulsi S ...

  4. html 父容器和子容器通信

    通过拿到document对象下的window对象后执行对应的方法.

  5. Mongodb常见错误

    1. log目录没有创建,而在logpath中有设定 2. SECONDARY默认不可以读取数据,需要db.getMongo().setSlaveOk(); 3. SECONDARY不可以写数据 4. ...

  6. HDU 1032 The 3n + 1 problem

    还以为要递归推一推的 结果暴力就过了 要注意 i,j 大小 #include <iostream> using namespace std; int a,b; long long cnt, ...

  7. HDU 1045(Fire Net)题解

    以防万一,题目原文和链接均附在文末.那么先是题目分析: [一句话题意] 给定大小的棋盘中部分格子存在可以阻止互相攻击的墙,问棋盘中可以放置最多多少个可以横纵攻击炮塔. [题目分析] 这题本来在搜索专题 ...

  8. Linux命令--链接文件的那些事

    linux 链接ln的使用 linux操作系统下ln的使用方式: ln [option] source_file dest_file #source_file是待建立链接文件的文件,dest_file ...

  9. Windows中进程的内存结构

    基础知识: 栈是一种简单的数据结构,是一种只允许在其一端进行插入或删除的线性表.允许插入或删除操作的一端称为栈顶,另一端称为栈底,对栈的插入和删除操作被称为入栈和出栈. 有一组CPU指令可以实现对进程 ...

  10. oracle中的初始化参数文件

    oracle初始化参数文件管理 oracle实例是指运行状态下的oracle软件,是由内存结构跟一些进程结构组成的,主要实现数据库的访问跟控制功能,是oracle的核心. 初始化参数文件是oracle ...