Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 3 如何填充CreatedOn和Modifiedon?_Asp.net Mvc 3 - Fatal编程技术网

Asp.net mvc 3 如何填充CreatedOn和Modifiedon?

Asp.net mvc 3 如何填充CreatedOn和Modifiedon?,asp.net-mvc-3,Asp.net Mvc 3,我创建了模型类并添加了记录器字段CreatedOn和ModifiedOn。我为同一个模型创建了一个crud类。我想处理这个没有任何表单输入字段的记录器,并想自动添加到db表中。我怎样才能做到这一点呢?对不起,我不知道你的确切意思。您是否会在操作后在控制器中填充这些记录器字段 (如果我理解错误,很抱歉)这取决于您的偏好/持久性模型 您可以在构造函数中填充CreatedOn属性,并在每次保存时填充ModifiedOn属性 如果您使用的是实体框架,则可以挂接到DataContext上的SaveChan

我创建了模型类并添加了记录器字段
CreatedOn
ModifiedOn
。我为同一个模型创建了一个crud类。我想处理这个没有任何表单输入字段的记录器,并想自动添加到db表中。我怎样才能做到这一点呢?

对不起,我不知道你的确切意思。您是否会在操作后在控制器中填充这些记录器字段


(如果我理解错误,很抱歉)

这取决于您的偏好/持久性模型

您可以在构造函数中填充CreatedOn属性,并在每次保存时填充ModifiedOn属性

如果您使用的是实体框架,则可以挂接到DataContext上的SaveChanges()方法,并在其中填充CreatedOn和ModifiedOn属性。确保您的属性是基类/接口的一部分,如(IAuditable),然后您可以执行以下操作

public class YourContext : DbContext
{
    public override int SaveChanges()
    {
       ChangeTracker.DetectChanges();

        ObjectContext ctx = ((IObjectContextAdapter)this).ObjectContext;

        List<ObjectStateEntry> objectStateEntryList =
            ctx.ObjectStateManager.GetObjectStateEntries(EntityState.Added
                                                       | EntityState.Modified
                                                       | EntityState.Deleted)
            .ToList();

        foreach (ObjectStateEntry entry in objectStateEntryList)
        {
            var auditObject = entry.Entity as IAuditable;
            if(auditObject.CreatedOn != DateTime.MinValue)
            {
                auditObject.CreatedOn = DateTime.Now;
            }

            auditObject.ModifiedOn = DateTime.Now;
        }

        return base.SaveChanges();
    }
}
public类YourContext:DbContext
{
公共覆盖int SaveChanges()
{
ChangeTracker.DetectChanges();
ObjectContext ctx=((IObjectContextAdapter)this).ObjectContext;
列表objectStateEntryList=
ctx.ObjectStateManager.GetObjectStateEntries(EntityState.Added
|EntityState.Modified
|EntityState(已删除)
.ToList();
foreach(objectStateEntryList中的ObjectStateEntry条目)
{
var auditObject=entry.Entity作为IAuditable;
if(auditObject.CreatedOn!=DateTime.MinValue)
{
auditObject.CreatedOn=DateTime.Now;
}
auditObject.ModifiedOn=DateTime.Now;
}
返回base.SaveChanges();
}
}

我刚才说我刚开始使用asp.net mvc 3I刚开始使用mvc。我也这么做了。一旦表单模型在
if(ModelState.IsValid)
及其完成后被验证,我就添加了这个值。谢谢你。@Mohaymin实际上我本想对他的问题发表意见,但我匆忙地错用了答案框。不管怎样,我很高兴你明白了,拉詹·拉瓦尔:)@gardarvalur:我只是不明白你的答案。既然这是公认的答案,毫无疑问这是一个答案