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 将自动扫描此类,并进行对 ...
随机推荐
- Swift语言指南(六)--可选值
原文:Swift语言指南(六)--可选值 在值可能不存在的情况下使用可选值(optional), 可选值是: · 存在一个值,这个值等于 x 或 · 不存在任何值 注: 在 C 和 Objective ...
- jQuery 添加 删除 改动select option
jQuery获取Select选择的Text和Value: 1. var checkText=jQuery("#select_id").find("option:selec ...
- Linux 查看和删除进程
1. 在 LINUX 命令平台输入 1-2 个字符后按 Tab 键会自动补全后面的部分(前提是要有这个东西,例如在装了 tomcat 的前提下, 输入 tomcat 的 to 按 tab).2. ps ...
- MVC5 EF6 Bootstrap3 HtmlHelper
MVC5 + EF6 + Bootstrap3 (9) HtmlHelper用法大全(下) 上一节:MVC5 + EF6 + Bootstrap3 (8) HtmlHelper用法大全(上) 源码下载 ...
- 转载:Linux Used内存到底到哪里去了?
转自:http://blogread.cn/it/article/6264?f=wb2 有时在Linux下会碰到这样的问题:ps aux看到的RSS内存只有不到30M,但是free看到内存却已经使用了 ...
- OpenSUSE13.2安装MongoDB
真是一个悲伤的故事,就是你解决过得问题没有记住,却需要再通过搜索引擎来找一遍,幸运的是曾经你做过记录,搜索帮你找到了. 这是我一个Wordpress博客整理记录的,好久没在那里更新了,两个月的时间,我 ...
- C#使用COM搜索本地word文档关键字
/// <summary> /// 检索根目录下的子目录及其所有文件,并在datagridview中显示文档名称及路径--递归调用 /// </summary> /// < ...
- 关于标准I/O缓冲区和fork函数
标准I/O库提供缓冲的目的是尽可能减少使用read和write调用的次数.标准I/O提供三个类型的缓冲:全缓冲.行缓冲和不带缓冲.标准输入(stdin)和标准输出(stdout)是行缓冲,标准出错(s ...
- 按照鬼哥学so变化,四,第一章的例子
跟随鬼哥伦比亚科学so变化,四.第一章的例子 图纸/文化 听鬼哥说故事 ---------------------------------------------切割线--------------- ...
- svn外网访登录不进去提示证书错误Authorization Required
为了外网能访问内网svn.于是坐在外网端口映射.但是奇怪的是内网能访问,外网总也登录不进去.以为是浏览器版本低 但是其他浏览器也一样.最后客户端也登录不进去.提示报错: Authorization ...