zoukankan      html  css  js  c++  java
  • asp.net mvc 自定义模型绑定

    在asp.net mvc的控制器中如果能够活用模型的自动绑定功能的话能够减少许多工作量。但是如果我们想要对前台传来的数据进行一些处理再绑定到模型上,该怎么做呢?

    这里用一个绑定用户数据的小案例来讲解asp.net的自定义模型绑定。

    新建用户模型:

        public class User
        {
            public string name { set; get; }
            public int age { set; get; }
            public DateTime day { set; get; }
        }

    新建UserCustomBinder类,继承自DefaultModelBinder类(来自system.web.mvc)

        public class UserCustomBinder : DefaultModelBinder
        {
            public override object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
            {
                if (bindingContext.ModelType == typeof(User))
                {
                    var request = controllerContext.HttpContext.Request;
    
                    string name = request.Form.Get("name")+"testtest";
                    int age = int.Parse(request.Form.Get("age"));
                    DateTime day = Convert.ToDateTime(request.Form.Get("date"));
    
                    return new User
                    {
                        name = name,
                        age = age,
                        day = day
                    };
                }
                else
                {
                    return base.BindModel(controllerContext, bindingContext);
                }
    
            }
        }

    然后再Global.asax.cs中添加UserCustomBinder类。

    ModelBinders.Binders.Add(UserCustomBinder);

    控制器:

            public ActionResult CustModelView()
            {
                return View();
            }
            public ActionResult CustModel(User user)
            {
    
                return Content("123");  //在这里下断点
            }

    视图:

    @model dynamic
    
    <!DOCTYPE html>
    
    <html>
    <head>
        <title>title</title>
    </head>
    <body>
    <div>
        <form method="post" action="/home/CustModel">
            <input type="text" name="name" value="" />
            <input type="number" name="age" value="" />
            <input type="date" name="day"/>
            <input type="submit" value="submit"/>
        </form>
    </div>
    </body>
    </html>

    填写并提交视图上的表单后可以发现User类已经实现了自定义绑定。

  • 相关阅读:
    Kafka架构
    MapReduce执行流程解析
    ZooKeeper选举机制
    Zookeeper全局一致性
    HDFS的快照
    在CentOS 6.5上安装NodeJS
    Node v0.12.5 稳定版发布
    CentOS6.5手动升级gcc4.8.2
    centos6 yum 安装 install c++4.8 gcc4.8
    Linux CentOS6系统安装最新版本Node.js环境及相关文件配置
  • 原文地址:https://www.cnblogs.com/axel10/p/8630439.html
Copyright © 2011-2022 走看看