【问题标题】:Handling Created and Modified Date in MVC在 MVC 中处理创建和修改日期
【发布时间】:2017-06-16 21:31:32
【问题描述】:

您好,我有一个 MVC 应用程序,它具有 CreatedDate 和 ModifiedDate 字段, 1. CreatedDate 是用户创建模块的时间(任何条目) 2. ModifiedDate是用户编辑模块的时间

我有以下模型类

namespace MyForms.Models
{
    public class Master
    {
        public int ID { get; set; }
        public string ModuleName { get; set; }
        public int CreatedBy { get; set; }
        public DateTime ? CreatedDate { get; set; }
        public int ModifyBy { get; set; }
        public DateTime ModifyDate { get; set; }
        public Boolean IsActive { get; set; }
        public Boolean IsDeleted { get; set; }

         // public virtual ICollection<Master> MasterModules { get; set; }
    }
    public class MyFormDemoContext : DbContext
    {
        public DbSet<Master> MasterForms { get; set;}
    }
    }

创建和编辑操作

public ActionResult Create()
        {
            return View();
        }
        [HttpPost]
        public ActionResult Create(Master master)
        {
            try
            {
                using (MyFormDemoContext context = new MyFormDemoContext()) 
                {
                    master.CreatedBy = 1;
                    master.CreatedDate = DateTime.Now;
                    var a = master.CreatedDate;
                    master.IsActive = true;
                    master.ModifyBy = 1;
                    master.ModifyDate = DateTime.Now;
                    master.IsDeleted = false;   
                    context.MasterForms.Add(master);
                    context.SaveChanges();
                }
                return RedirectToAction("Index");
            }
            catch
            {
                return View();
            }
        }
        public ActionResult Edit(int id)
        {
            using (MyFormDemoContext context = new MyFormDemoContext())
            {
                return View(context.MasterForms.Find(id));
            }
        }
        //
        // POST: /Home/Edit/5
        [HttpPost]
        public ActionResult Edit(int id, Master valpara)
        {
            try
            {
                using (MyFormDemoContext context = new MyFormDemoContext())
                {
                    valpara.CreatedBy = 1;
                    valpara.CreatedDate = DateTime.Now;
                    valpara.IsActive = true;
                    valpara.ModifyBy = 1;
                    valpara.ModifyDate = DateTime.Now;
                    valpara.IsDeleted = false;
                    valpara.ModifyDate = DateTime.Now;
                    context.Entry(valpara).State = System.Data.EntityState.Modified;
                    context.SaveChanges();
                }
                return RedirectToAction("Index");
            }
            catch
            {
                return View();

} }

1.currently 当我创建模块(条目)时,createdDate 将作为当前日期 2. 当我编辑模块时,modifiedDate 和 createdDate 是一样的

我的期望

我希望 createdDate 在我修改或编辑条目时保持不变,只有修改的日期才会更新

【问题讨论】:

    标签: asp.net asp.net-mvc-3


    【解决方案1】:

    当我编辑模块时,modifiedDate 和 createdDate 是一样的

    嗯,那是因为在您的 Edit 操作中,您专门设置了 CreatedDate,删除此行

    valpara.CreatedDate = DateTime.Now
    

    只有ModifiedDate 会被更新。但是,更好的方法是将您的数据库配置为自动设置日期(例如,如果您使用 MSSQL 将默认值设置为 GetUtcDate())并让 EF 提取该值而不是在客户端设置它。

    您需要在该特定字段上设置DatabaseGeneratedOption.Identity,以告知 EF 数据库将生成该值。

    仅供参考 - 你应该真的考虑将日期存储为 UTC 而不是本地日期,即使用 DateTime.UtcNow 而不是 DateTime.Now


    除上述之外,在您的Edit 中,您实际上每次重新创建一个新条目。如果您想修改现有记录,则需要先将该记录从数据库中取出,例如

    using (MyFormDemoContext context = new MyFormDemoContext()) 
    {
        var record = context.MasterForms.SingleOrDefault(x => x.ID == id);
        if (record != null)
        {
            record.ModifyBy = 1;
            record.ModifyDate = DateTime.UtcNow;
            context.SaveChanges();
        }
    }
    

    【讨论】:

    • 当我删除 valpara.CreatedDate = DateTime.Now 并编辑模块时,创建日期变为空
    • @JotDhaliwal 你不明白什么?
    • 是的,使用 DateTime.Now; UTC 现在显示的时间像 1.26.. 我在印度
    • @JotDhaliwal 是的,但这是意料之中的,UTC 在世界任何地方都是同一时间。如果您存储为本地,则意味着您只能在本地时区的时间可靠地工作。如果您的系统只能在印度工作,那么您可以安全地存储在本地。
    • 嗨,詹姆斯,你能指导我下一步吗,我将非常感谢你
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-15
    相关资源
    最近更新 更多