【问题标题】:asp.net mvc: how to create custom binding for models when using LINQ to Entitiesasp.net mvc:使用 LINQ to Entities 时如何为模型创建自定义绑定
【发布时间】:2009-11-18 19:53:50
【问题描述】:

我的数据库中有许多共享通用列的表:修改者、修改日期等。并非每个表都有这些列。我们使用 LINQ to Enties 来生成

我想创建一个自定义绑定器类来处理这些字段的自动绑定。有没有办法做到这一点,而无需为每个实体类自定义绑定类?

这是我的代码:

在 global.asax.cs 中,Application_Start():

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

然后在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;
}

有没有办法将其概括为可以处理多种类型?

【问题讨论】:

    标签: asp.net-mvc binding linq-to-entities


    【解决方案1】:

    我们在存储库中执行此操作,而不是在活页夹中。我们有一个带有公共字段的接口(已修改)。我们在部分类中实现接口,我们使用 T4 模板为实体进行代码生成。

    【讨论】:

      【解决方案2】:

      您可以使用反射按名称设置字段,以便您可以对属性名称执行 foreach。这没什么大不了的,因为模型绑定器使用反射本身来获取属性,无论如何。然后,您可以为每个“常见”类型注册活页夹 - 这也可以使用反射来完成,例如通过检查实体是否存在所有必需的字段 - 因此即使您添加新的此类实体,它也可以工作。

      只需让您的活页夹调用默认值,然后更新字段。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-06-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-04-27
        • 1970-01-01
        相关资源
        最近更新 更多