【问题标题】:How to make an array for timestamps on MVC 3如何在 MVC 3 上为时间戳创建一个数组
【发布时间】:2012-09-07 10:07:51
【问题描述】:

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

我的虚拟代码将不胜感激

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


公开课清单 { 公共 int ID { 获取;放; }

    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("Index");

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

【问题讨论】:

  • 好吧,拥有一个数组将是一个很好的开始。这个问题太宽泛了,无法回答。做一些代码,在这里发布并准确描述导致您头痛的原因。如果你不知道从哪里开始asp.net/mvc/tutorials
  • @sormii 感谢您的快速回复,我已在问题中添加了一些代码,希望您对我正在尝试做的事情有更清晰的了解

标签: asp.net-mvc arrays asp.net-mvc-3 arraylist timestamp


【解决方案1】:

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

【讨论】:

  • MVC 是实现这一目标的最佳平台吗?任何建议将不胜感激@TigranG
  • 创建模型的 oldsStatus 和 oldTitle 属性并赋值 (oldStatus=status,oldtitle=Title)。然后将其绑定到隐藏字段 (@Html.HiddenFor(a=>a.oldStatus) ....)。之后,您将在回发后恢复这两个属性。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-03-06
  • 2012-04-27
  • 2018-10-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多