MVC从视图传参到Controller几种方式
简单数组传递
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几种方式的更多相关文章
- ASP.NET MVC从视图传参到控制器的几种形式
1. 传递数组 $(function () { var value = ["C#", "JAVA", "PHP"]; $("inp ...
- ASP.NET MVC之视图传参到控制器的几种形式
1. 传递数组 $(function () { var value = ["C#", "JAVA", "PHP"]; $("inp ...
- 详解 anjularjs的ui-route(多视图、视图嵌套、视图传参)
最近整理了一下anjularjs的第三方插件ui-route,在这就以一个demo的形式讲解一下.整片博客均以开头的demo代码为例.下边是个目录,大家可以酌情直接跳转浏览. 1. demo的代码 2 ...
- sring mvc 返回值至jsp界面的几种方式
Spring 通过Controller 向 View 传值的方法有以下四种 HttpServletRequest ModelAndView Map<String, Object> map ...
- ASP.NET MVC之读取服务器文件资源的两种方式
初次认识asp.net mvc时,以为所有文件都需要走一遍路由,然后才能在客户端显示, 所以我首先介绍这一种方式 比如说:我们在服务器上有图片: ~/resource/image/5.jpg 我们就需 ...
- 关于MVC视图传参
转自:http://q.cnblogs.com/q/48477/
- spring mvc 通过配置xml访问控制器的三种方式
(一)通过 name 来一一映射(默认) (二)通过简单url 来指定映射,key 表示访问url value 是bean的ID (三)通过控制类的类名控制器,访问时类名首字母需要小写 <!-- ...
- ASP.NET MVC 下拉框的传值的两种方式
以前使用WebForm变成时,下拉框传值只需直接在后台绑定代码就可以了.现在我们来看看在MVC中DropDownList是如果和接受从Controller传过来的值的. 第一种:使用DropDownL ...
- Spring MVC中页面向后台传值的几种方式
在学习 Spring Mvc 过程中,有必要来先了解几个关键参数: @Controller: 在类上注解,则此类将编程一个控制器,在项目启动 Spring 将自动扫描此类,并进行对 ...
随机推荐
- 利用webBrowser获取框架内Html页面内容
原文:利用webBrowser获取框架内Html页面内容 利用webBrowser获取页面比较简单,MSDN下有示例,在这里不必多说. 可是一些 HTML 文档由“框架”构成,或可以存放它们自己独特 ...
- 动画云创始人胥克谦&课程格子创始人李天放分享创业经历
原文地址:http://student.csdn.net/mcd/topic/163587/955044 2014年10月18日在北京科技大学成功举办了CSDN高校俱乐部全国巡讲,现场參会学生有一百余 ...
- exec 重定向
文件中常用的重定向: command > filename把把标准输出重定向到一个新文件中command >> filename 把把标准输出重定向到一个文件中 (追加)comman ...
- Cocos2d-x学习笔记(14)(更新函数scheduleUpdate、进度计时器CCProgressTo、滚动视图CCScrollView)
一.scheduleUpdate 1.scheduleUpdate:此函数是CCNode的函数,每一个CCNode仅仅要调用scheduleUpdate更新函数,那么这个CCNode就会响应当前类的u ...
- select刷新后,保持选定状态,Cookies存储select选定状态信息
//cookies存储select选定值,防止刷新后没了 window.onload = function () { var cooki = document.cookie; if (cooki != ...
- UiAutomator源码分析之UiAutomatorBridge框架
上一篇文章<UIAutomator源码分析之启动和运行>我们描述了uitautomator从命令行运行到加载测试用例运行测试的整个流程,过程中我们也描述了UiAutomatorBridge ...
- windows 开机自动登录,或者说是开机后自动进入桌面
这篇文章,对于XP以及XP以上版本有效,包括Windows Server服务器操作系统. 1.原理 --Windows自动登录的原理是,开始后,自动输入登录所使用的账号的用户名和密码,并且自动进入桌面 ...
- 快速构建Windows 8风格应用36-商店应用发布流程
原文:快速构建Windows 8风格应用36-商店应用发布流程 引言 在发布应用之前,我们需要注册开发者账号才能够发布应用.我们可以登录https://appdev.microsoft.com/Sto ...
- Linux下PHP开发环境搭建
平时写程序时都是在服务器已经搭建好的PHP环境进行的.出于对未知知识的好奇,这几天在自己的机器上搭建起了PHP开发环境.本想轻松顺利的看到phpinfo显示在我的页面上,没想到安装环境时一路的erro ...
- des和Rijndael加密
------------IV的作用: 为了保证数据的安全,.NET基类库中提供的私钥算法类使用称作密码块链(CBC,Cipher Block Chaining)的链模式,算法使用一个密钥和一个初始化向 ...