简单数组传递

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. OCP-1Z0-051-名称解析-文章32称号

    32. Which CREATE TABLE statement is valid? A. CREATE TABLE ord_details          (ord_no NUMBER(2) PR ...

  2. hust1384---The value of F[n]

    Description For any integer i>=3 we have F[i]=(F[i-1]+2*F[i-2]+3*F[i-3])%9901; Now give you F[0], ...

  3. DevExpress asp.net 导出Excel 自动开启迅雷问题,默认保存为aspx页面

    目前采取曲线救国策略: 利用MVC ..... <dx:ASPxGridView ID="ASPxGridView1" runat="server" Au ...

  4. C# WebBrowser 代理的使用

    原文:C# WebBrowser 代理的使用 The WebBrowser control is just an embeddded IE Control, I believe any setting ...

  5. UIImage分类:返回一个可以拉伸的图片

    // 返回一个可拉伸的图片 // UIImage的分类 + (UIImage *)resizedImage:(NSString *)name { UIImage *image = [self imag ...

  6. 什么是MEAN全堆栈javascript开发框架

    什么是MEAN全堆栈javascript开发框架 使用JavaScript能够完整迅速做出Web应用程序,目前一套工具包括MongoDB.ExpressJS,AngularJS和Node.js越来越受 ...

  7. 转载:Eclipse+Spket插件+ExtJs4修改版提供代码提示功能[图]

    转载:Eclipse+Spket插件+ExtJs4修改版提供代码提示功能[图] ExtJs是一种主要用于创建前端用户界面,是一个基本与后台技术无关的前端ajax框架.功能丰富,无人能出其右.无论是界面 ...

  8. Java实现缓存(类似于Redis)

    Java实现缓存,类似于Redis的实现,可以缓存对象到内存中,提高访问效率.代码如下: import java.util.ArrayList; import java.util.HashMap; i ...

  9. 【hoj】2651 pie 二分查找

    二分查找是一个非常主要的算法,针对的是有序的数列,通过中间值的大小来推断接下来查找的是左半段还是右半段,直到中间值的大小等于要找到的数时或者中间值满足一定的条件就返回,所以当有些问题要求在一定范围内找 ...

  10. HDU1024 Max Sum Plus Plus(DP)

    状态:d(i,j)它代表前j划分数i部并且包括第一j最佳结果时的数.g(i,j)表示前j划分数i最好的结果时,段,g(m,n)结果,需要. 本题数据较大.需採用滚动数组.注意:这题int类型就够用了, ...