zoukankan      html  css  js  c++  java
  • 原来自定义模型绑定器还可以这么玩

    我有个功能,需要绑定List<User>。我做了个测试:
    试图:

    @using (Html.BeginForm("save", "user"))
    {
      <div>
      用户名:<input type="text" name="UserName" /><br />
      用户名:<input type="text" name="UserName" /><br />
      <input type="submit" value="submit" />
      </div>
    }

    模型:

    public class User
    {
      public string UserName { get; set; }
    }

    控制器:

    public ActionResult Save(List<Models.User> users)
    {
      return Content("success");
    }

    自定义模型绑定器:

    public class UsersBinder : IModelBinder
    {
    
      public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
      {
        string[] userNames = controllerContext.RequestContext.HttpContext.Request.Form.GetValues("username");
    
        List<Models.User> users = new List<Models.User>();
        Models.User user;
        foreach (var item in userNames)
        {
          user = new Models.User
          {
            UserName = item
          };
          users.Add(user);
        }
    
        return users;
      }
    }

    Global.asax.cs:

    protected void Application_Start()
    {
      AreaRegistration.RegisterAllAreas();
    
      WebApiConfig.Register(GlobalConfiguration.Configuration);
      FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
      RouteConfig.RegisterRoutes(RouteTable.Routes);
    
      ModelBinders.Binders.Add(typeof(List<Models.User>), new Extend.UsersBinder());
    }

    这样通过自定义模型绑定器,当客户端有N个User视图模型的时候,可以在控制器的方法里自动绑定,实现了我想要的效果。

  • 相关阅读:
    delphi验证码识别之如何识别高级验证码
    delphi验证码识别学习之图像的灰度化、二值化及反色
    js 数字,金额 用逗号 隔开。数字格式化
    fedora linux 下安装pwntcha[验证码开源]
    C#的多线程机制探索4
    【一天的作息时间】.....程序员们,好好看看
    我的图像之路之CAPTCHA 和 break CAPTCHA
    C#格式化字符串
    struts2拦截器
    java动态代理(JDK和cglib)
  • 原文地址:https://www.cnblogs.com/subendong/p/4086627.html
Copyright © 2011-2022 走看看