简单数组传递

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. ajax——client访问webservice基本用法

    学前aps.net当我学会了使用服务器端的访问webservice方法,然后实现一个样本:web server模拟网上购物,今天学习asp.net ajax的时候学习到了client直接訪问webse ...

  2. CSS3+HTML5特效2 - 翻转效果

    先看效果,鼠标移上去看看. back front 1. 本实例需要以下元素 a. 容器BOX b. 默认显示元素FRONT c. 翻转显示元素BACK 2. 容器BOX的Height为200px,Wi ...

  3. javascript常用知识点集

    javascript常用知识点集 目录结构 一.jquery源码中常见知识点 二.javascript中原型链常见的知识点 三.常用的方法集知识点 一.jquery源码中常见的知识点 1.string ...

  4. Google maps API开发

    原文:Google maps API开发 Google maps API开发(一) 最近做一个小东西用到google map,突击了一下,收获不小,把自己学习的一些小例子记录下来吧 一.加载Googl ...

  5. XFtp中文乱码解决

    异常处理汇总-开发工具  http://www.cnblogs.com/dunitian/p/4522988.html 一张图解决 异常处理汇总:http://www.cnblogs.com/duni ...

  6. 简单DP-艰难取舍

    艰难取舍(seq.cpp/c/pas) [题目描述] 由于hyf长得实在是太帅了,英俊潇洒,风流倜傥,人见人爱,花见花开,车见车载.有一群MM排队看hyf.每个 MM都有自己独特的风格,由于 hyf有 ...

  7. C语言字符串操作函数集

    1)字符串操作 strcpy(p, p1) 复制字符串 strncpy(p, p1, n) 复制指定长度字符串 strcat(p, p1) 附加字符串 strncat(p, p1, n) 附加指定长度 ...

  8. jQuery Easy UI LinkButton(button)包

    LinkButton(button)包,easyui其中一个基本组成部分 演示样例: <!DOCTYPE html> <html> <head> <title ...

  9. PHP+MYSQL分页原理

    1.SQL语句中的limit用法 2.学习分页的一种公式 3.parse_url()解析URL函数 parse_url() 是将URL解析成有固定键值的数组的函数 4.$_SERVER["R ...

  10. Object.prototype.propertyIsEnumerable

    语法: obj.propertyIsEnumerable(prop); 此方法返回一个布尔值,表明指定的属性名是否是当前对象可枚举的自身属性. 1.如果是用户自定义了对象的属性,将返回true,比如 ...