0

我对 MVC 3 相当陌生,我的任务是创建一个待办事项列表,该列表具有每个自变量的时间戳,因此当一个变量发生更改时,更改时间的时间戳将出现在该变量的文本字段中并且不更改其他变量的其他时间戳,即每个变量都有一个单独的时间戳。我相信我只能或很可能通过创建一个数组来实现这一点。关于如何执行此操作的任何想法?

我的虚拟代码将不胜感激

这是我的模型示例,我按照本教程http://www.asp.net/mvc/tutorials/getting-started-with-aspnet-mvc3/cs/intro-to-aspnet-mvc-3


公共类清单 { public int ID { get; 放; }

    public string Title { get; set; }

    public string Status { get; set; }

    [Display(Name = "Start Date")]
    public string Start_Date { get; set; }

    [Display(Name = "Complesion Date")]
    public string Complesion_Date { get; set; }

    public DateTime[] Timestamp
    {
        get { return timestamp; }
        set { timestamp = value; }

    [Display(Name = "Internal Review System Reference")]
    public string Internal_Review_System_Reference { get; set; }

    [Display(Name = "Assignment from Original Owner")]
    public bool Assignment_from_Original_Owner { get; set; }

    public class listDBContext : DbContext
{
    public DbSet<Checklist> List { get; set; }
}  

这是我的控制器代码示例

    public class SybreController : Controller 
{
    private listDBContext db = new listDBContext();
    private Checklist check = new Checklist();
    private string oldTitle { get; set; }
    private string oldStatus { get; set; }

public ActionResult Edit(int id)//点击编辑按钮时调用{

        Checklist checklist = db.List.Find(id);
        this.oldTitle = checklist.Title;
        this.oldStatus = checklist.Status;
        //initAllArrays(checklist);//initialize our arrays with previous values
        return View(checklist);
    }
[HttpPost]
    public ActionResult Edit(Checklist checklist)
    {
        if (ModelState.IsValid)
        {              

            checklist.Timestamp = DateTime.Now;
            if (checklist.Title != this.oldTitle)
            {
                checklist.stamps[0] = DateTime.Now;
            }
            if (checklist.Status != this.oldStatus)
            {
                checklist.stamps[1] = DateTime.Now;
            }
            else
            { checklist.stamps[1] = checklist.stamps[1]; }

            db.Entry(checklist).State = EntityState.Modified;
            db.SaveChanges();

return RedirectToAction("索引");

基本上我的模型中的每个变量都需要一个时间戳,以便在编辑时,时间戳对应于编辑时,我一直面临的问题是时间戳变量在所有变量中发生变化,而不仅仅是一个改变了。我只需要程序打印上次编辑时的前一个时间戳,如果已编辑,则在文本字段旁边显示当前时间。希望你能理解 -__-

4

1 回答 1

2

你不能用这种方式解决你的问题。Asp.net MVC 是无状态的,这意味着控制器的实例是根据每个请求创建的。这意味着您为设置时间戳执行的检查始终具有真实值,因为 oldTitle 和 oldStatus 为空值。

于 2012-09-07T11:27:56.087 回答