代码之家  ›  专栏  ›  技术社区  ›  chris

asp.netmvc:使用linqto实体时如何为模型创建自定义绑定

  •  1
  • chris  · 技术社区  · 15 年前

    我的数据库中有许多表共享公共col:modified by,modified date等等,不是每个表都有这些col。我们使用LINQ to Enties来生成

    我想创建一个可以处理这些字段的自动绑定的自定义绑定类。有没有一种方法可以做到这一点,而不必为每个实体类定制绑定类?

    我的密码是:

    在全局.asax.cs,应用程序启动():

      ModelBinders.Binders.Add(typeof(Foo),new FooBinder());
    

    然后进来食品粘合剂.cs:

    public override Object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
    {
      var obj = (Foo)base.BindModel(controllerContext, bindingContext);
      var user = controllerContext.HttpContext.User.Identity;
      obj.modified_by = user.Name;
      obj.modified_date = DateTime.Now;
      return obj;
    }
    

    2 回复  |  直到 15 年前
        1
  •  1
  •   Craig Stuntz    15 年前

    我们在存储库中执行此操作,而不是在绑定器中。我们有一个与公共字段(在上修改)的接口。我们在部分类中实现接口,我们使用T4模板为实体编写代码。

        2
  •  0
  •   queen3    15 年前

    可以使用反射按名称设置字段,以便可以对属性名称执行foreach。这不是什么大问题,因为模型绑定器使用反射本身来获取属性。然后,您就可以为每个“公共”类型注册绑定器—使用反射也可以做到这一点,例如,通过检查实体是否具有所有需要的字段—因此即使您添加了新的此类实体,它也可以工作。

    只要让你的活页夹调用默认的一个,然后更新字段。