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="001"/></p>
    <p><input type="text" name="Name" value="Tom" /></p>
    <p><input type="text" name="Age" value="24"/></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: "001", Name: "Tom", Age: 20, Courses: ["语文", "数学", "外语"] });
                models.push({ No: "002", Name: "Jeff", Age: 21, Courses: ["语文", "数学", "外语"] });
                models.push({ No: "003", Name: "Hacks", Age: 22, 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: "001", Name: "Tom", Age: 20, Courses: ["语文", "数学", "外语"] });
                models.push({ No: "002", Name: "Jeff", Age: 21, Courses: ["语文", "数学", "外语"] });
                models.push({ No: "003", Name: "Hacks", Age: 22, 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几种方式

时间: 2024-08-03 22:53:31

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

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

1. 传递数组 $(function () { var value = ["C#", "JAVA", "PHP"]; $("input[type='button']").click(function () { $.ajax( { url: "/Home/List", type: "Get", data: { valuelist: value }, traditional: true, /

EF5(7) 后台使用SelectListItem传值给前台显示Select下拉框;mvc后台Action接收浏览器传值的4种方式; 后台Action向前台View视图传递数据的四种方式

一:后台使用SelectListItem 传值给前台显示Select下拉框 我们先来看数据库的订单表,里面有3条订单,他们的用户id对应了 UserInfo用户表的数据,现在我们要做的是添加一个Order控制器,显示订单列表,并且在修改订单的时候,把用户的id 用 select 下拉框显示出来,并且可以提交修改数据   1.1 我们通过比较原始的方法,来把数据 传递到前台后,前台使用  循环来显示 select 并且显示是哪个元素被选中 我们在前台的cshtml中,使用 @model 命令 指定

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

Spring 通过Controller 向 View 传值的方法有以下四种 HttpServletRequest ModelAndView Map<String, Object> map Model model 第一种 需要参数HttpServletRequest 返回值是jsp页面 @RequestMapping("/query1.do") public String queryUser1(HttpServletRequest request){ String name

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

在学习 Spring Mvc 过程中,有必要来先了解几个关键参数:   @Controller:         在类上注解,则此类将编程一个控制器,在项目启动 Spring 将自动扫描此类,并进行对应URL路由映射.@Controllerpublic class UserAction {    }  @RequestMapping         指定URL映射路径,如果在控制器上配置 RequestMapping  ,具体请求方法也配置路径则映射的路径为两者路径的叠加 常用映射如:Reque

Spring MVC 下设置默认访问页面的3种方式

1.默认tomcat容器的默认页面. /index.html 这种方式适合访问静态的页面(也包括JSP)或者说是没有任何参数的页面. 2.spirng mvc 默认index controller 方式 如果在tomcat容器没有配置默认页面,怎spring mvc 会主动去寻找/index的controller,如果有则会调用,没有则会显示404页面. @RequestMapping(value="/index") public ModelAndView index(HttpServ

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

(一)通过 name 来一一映射(默认) (二)通过简单url 来指定映射,key 表示访问url value 是bean的ID (三)通过控制类的类名控制器,访问时类名首字母需要小写 <!-- 配置Controller --> <bean id="loginController" name="/login.do" class="com.beifeng.controller.LoginController"></be

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

以前使用WebForm变成时,下拉框传值只需直接在后台绑定代码就可以了.现在我们来看看在MVC中DropDownList是如果和接受从Controller传过来的值的. 第一种:使用DropDownList 控制器代码: public ActionResult Index() { //1.1查询YzSeriesEntity的数据 List<Model.YzSeriesEntity> seriesList = seriesBLL.LoadEnities().ToList(); //1.2将YzS

MVC下拉框的传值的两种方式

http://www.cnsendblog.com/index.php/?p=137GPS平台.网站建设.软件开发.系统运维,找森大网络科技!http://cnsendnet.taobao.com 以前使用WebForm变成时,下拉框传值只需直接在后台绑定代码就可以了.现在我们来看看在MVC中DropDownList是如果和接受从Controller传过来的值的. 第一种:使用DropDownList 控制器代码: 1. public ActionResult Index() 2. { 3. 4

Spring mvc应用 加载静态资源的几种方式

总结几种Spring mvc应用加载静态资源的方式 1.使用服务器的默认Servlet处理 对于不同的服务器,处理静态资源的servlet-name不一样,需要去看服务器具体的配置文件 比如resin-3.1.12,通过查看app-default.xml可以看到默认处理jsp的servlet-name为>resin-jsp 所以可以通过在web.xml中添加静态资源的访问 <servlet-mapping>        <servlet-name>resin-jsp<