简单数组传递

var array = ["aaa", "bbb", "ccc"];
$.ajax({
url:"@Url.Action("Test")",
type: "POST",
data: { array: array },
traditional: true //需要写上该属性,Controller才能接收到
}); public ActionResult Test(List<string> array) {
return null;
}

单个模型传递

@using (Html.BeginForm("Test", "Home")) {
<p><input type="text" name="No" value=""/></p>
<p><input type="text" name="Name" value="Tom" /></p>
<p><input type="text" name="Age" value=""/></p>
<p><input type="checkbox" name="Courses" value="语文" />
<input type="checkbox" name="Courses" value="数学" />
<input type="checkbox" name="Courses" value="外语" />
</p>
<p><button type="submit">提交</button></p>
}
public ActionResult Test(Student student) {
return null;
}

多个模型传递

1.方式一

 var models = [];
models.push({ No: "", Name: "Tom", Age: , Courses: ["语文", "数学", "外语"] });
models.push({ No: "", Name: "Jeff", Age: , Courses: ["语文", "数学", "外语"] });
models.push({ No: "", Name: "Hacks", Age: , Courses: ["语文", "数学", "外语"] });
$.ajax({
url: '@Url.Action("Test")',
data: JSON.stringify(models),//第一个地方,需要进行JSON序列化
type: 'POST',
contentType: 'application/json',//第二个地方,需要声明为'application/json',默认'application/x-www-form-urlencoded'
success: function (data) { }
}); public ActionResult Test(List<Student> models) {
return null;
}

2.方式二 (Model Binder)

需要借助ModelBinder来处理,添加一个类 :JsonModelBinderAttribute.cs

 public class JsonModelBinderAttribute : CustomModelBinderAttribute {
public override IModelBinder GetBinder() {
return new JsonBinder();
}
}
public class JsonBinder : IModelBinder {
public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext) {
//return base.BindModel(controllerContext, bindingContext);
if (controllerContext == null) {
throw new ArgumentNullException("controllerContext");
} if (bindingContext == null) {
throw new ArgumentNullException("bindingContext");
} var prefix = bindingContext.ModelName;
string jsonString = controllerContext.RequestContext.HttpContext.Request.Params[prefix];
if (jsonString != null) {
var serializer = new JavaScriptSerializer();
var result = serializer.Deserialize(jsonString, bindingContext.ModelType);
return result; }
else {
return null;
} }
}
  var models = [];
models.push({ No: "", Name: "Tom", Age: , Courses: ["语文", "数学", "外语"] });
models.push({ No: "", Name: "Jeff", Age: , Courses: ["语文", "数学", "外语"] });
models.push({ No: "", Name: "Hacks", Age: , Courses: ["语文", "数学", "外语"] });
$.ajax({
url: '@Url.Action("Test")',
data: { models: JSON.stringify(models) },
type: 'POST',
success: function (data) { }
}); public ActionResult Test([JsonModelBinder]List<Student> models) {
return null;
}

参考:http://ishwor.cyberbudsonline.com/2012/07/fun-with-aspnet-mvc-3-custom-json-model-binder.html

MVC从视图传参到Controller几种方式的更多相关文章

  1. ASP.NET MVC从视图传参到控制器的几种形式

    1. 传递数组 $(function () { var value = ["C#", "JAVA", "PHP"]; $("inp ...

  2. ASP.NET MVC之视图传参到控制器的几种形式

    1. 传递数组 $(function () { var value = ["C#", "JAVA", "PHP"]; $("inp ...

  3. 详解 anjularjs的ui-route(多视图、视图嵌套、视图传参)

    最近整理了一下anjularjs的第三方插件ui-route,在这就以一个demo的形式讲解一下.整片博客均以开头的demo代码为例.下边是个目录,大家可以酌情直接跳转浏览. 1. demo的代码 2 ...

  4. sring mvc 返回值至jsp界面的几种方式

    Spring 通过Controller 向 View 传值的方法有以下四种 HttpServletRequest ModelAndView Map<String, Object> map ...

  5. ASP.NET MVC之读取服务器文件资源的两种方式

    初次认识asp.net mvc时,以为所有文件都需要走一遍路由,然后才能在客户端显示, 所以我首先介绍这一种方式 比如说:我们在服务器上有图片: ~/resource/image/5.jpg 我们就需 ...

  6. 关于MVC视图传参

    转自:http://q.cnblogs.com/q/48477/

  7. spring mvc 通过配置xml访问控制器的三种方式

    (一)通过 name 来一一映射(默认) (二)通过简单url 来指定映射,key 表示访问url value 是bean的ID (三)通过控制类的类名控制器,访问时类名首字母需要小写 <!-- ...

  8. ASP.NET MVC 下拉框的传值的两种方式

    以前使用WebForm变成时,下拉框传值只需直接在后台绑定代码就可以了.现在我们来看看在MVC中DropDownList是如果和接受从Controller传过来的值的. 第一种:使用DropDownL ...

  9. Spring MVC中页面向后台传值的几种方式

    在学习 Spring Mvc 过程中,有必要来先了解几个关键参数:   @Controller:         在类上注解,则此类将编程一个控制器,在项目启动 Spring 将自动扫描此类,并进行对 ...

随机推荐

  1. 利用webBrowser获取框架内Html页面内容

    原文:利用webBrowser获取框架内Html页面内容 利用webBrowser获取页面比较简单,MSDN下有示例,在这里不必多说. 可是一些 HTML 文档由“框架”构成,或可以存放它们自己独特 ...

  2. 动画云创始人胥克谦&amp;课程格子创始人李天放分享创业经历

    原文地址:http://student.csdn.net/mcd/topic/163587/955044 2014年10月18日在北京科技大学成功举办了CSDN高校俱乐部全国巡讲,现场參会学生有一百余 ...

  3. exec 重定向

    文件中常用的重定向: command > filename把把标准输出重定向到一个新文件中command >> filename 把把标准输出重定向到一个文件中 (追加)comman ...

  4. Cocos2d-x学习笔记(14)(更新函数scheduleUpdate、进度计时器CCProgressTo、滚动视图CCScrollView)

    一.scheduleUpdate 1.scheduleUpdate:此函数是CCNode的函数,每一个CCNode仅仅要调用scheduleUpdate更新函数,那么这个CCNode就会响应当前类的u ...

  5. select刷新后,保持选定状态,Cookies存储select选定状态信息

    //cookies存储select选定值,防止刷新后没了 window.onload = function () { var cooki = document.cookie; if (cooki != ...

  6. UiAutomator源码分析之UiAutomatorBridge框架

    上一篇文章<UIAutomator源码分析之启动和运行>我们描述了uitautomator从命令行运行到加载测试用例运行测试的整个流程,过程中我们也描述了UiAutomatorBridge ...

  7. windows 开机自动登录,或者说是开机后自动进入桌面

    这篇文章,对于XP以及XP以上版本有效,包括Windows Server服务器操作系统. 1.原理 --Windows自动登录的原理是,开始后,自动输入登录所使用的账号的用户名和密码,并且自动进入桌面 ...

  8. 快速构建Windows 8风格应用36-商店应用发布流程

    原文:快速构建Windows 8风格应用36-商店应用发布流程 引言 在发布应用之前,我们需要注册开发者账号才能够发布应用.我们可以登录https://appdev.microsoft.com/Sto ...

  9. Linux下PHP开发环境搭建

    平时写程序时都是在服务器已经搭建好的PHP环境进行的.出于对未知知识的好奇,这几天在自己的机器上搭建起了PHP开发环境.本想轻松顺利的看到phpinfo显示在我的页面上,没想到安装环境时一路的erro ...

  10. des和Rijndael加密

    ------------IV的作用: 为了保证数据的安全,.NET基类库中提供的私钥算法类使用称作密码块链(CBC,Cipher Block Chaining)的链模式,算法使用一个密钥和一个初始化向 ...