我是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();
基本上我需要为模型中的每个变量设置一个时间戳,以便在编辑时,时间戳对应于编辑的时间,我遇到的问题是时间戳变量在所有变量中发生变化而不是只有被改变的那个。我只需要程序打印上次编辑时的前一个时间戳,如果编辑,则显示文本字段旁边的当前时间。 希望你能理解--__-
答案 0 :(得分:2)
您无法以这种方式解决问题。 Asp.net MVC是无状态的,这意味着每个请求都会创建控制器的实例。这意味着您为设置时间戳而执行的检查始终为true值,因为oldTitle和oldStatus为空。