我正在使用EF4开发一个简单的MVC2项目。我还使用在控制器的构造函数中实例化的存储库模式。我有34个表,每个表都有CreatedBy和LastModifiedBy字段,保存记录时需要填充这些字段。

除此以外,您还有其他关于如何将用户名从控制器传递到实体的想法:

[HttpPost]
public ActionResult Create(){

     Record rec = new Record();
     TryUpdateModel(rec);
     rec.CreatedBy = HttpContext.Current.User.Identity.Name;
     rec.LastModifiedBy = HttpContext.Current.User.Identity.Name;
     repository.Save();

     return View();
}

最佳答案

您可以创建自定义模型联编程序,该联编程序将在调用操作之前设置这两个属性。

像这样:

public class CustomModelBinder : DefaultModelBinder
    {
        protected override void BindProperty(ControllerContext controllerContext, ModelBindingContext bindingContext, System.ComponentModel.PropertyDescriptor propertyDescriptor)
        {
            if ((propertyDescriptor.Name == "CreatedBy") || (propertyDescriptor.Name == "LastModifiedBy"))
            {
                //set value
            }
            base.BindProperty(controllerContext, bindingContext, propertyDescriptor);
        }
    }

07-25 21:59