我正在使用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);
}
}