0

私はMVC3にかなり慣れておらず、すべての独立変数のタイムスタンプを持つTo Doリストを作成する必要がありました。そのため、1つの変数が変更されると、変更されたときのタイムスタンプがその変数のテキストフィールドに表示されます。他の変数の他のタイムスタンプは変更しないでください。つまり、各変数には個別のタイムスタンプがあります。配列を作成することによってのみ、またはおそらくこれを達成できると思います。これを実行する方法について何かアイデアはありますか?

ダミーコードをいただければ幸いです

これが私のモデルのサンプルです。このチュートリアルに従いましたhttp://www.asp.net/mvc/tutorials/getting-started-with-aspnet-mvc3/cs/intro-to-aspnet-mvc-3


public class Checklist {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();

RedirectToAction( "Index");を返します。

基本的に、モデル内の個々の変数ごとにタイムスタンプが必要です。そのため、編集時にタイムスタンプは編集時に対応します。私が直面している問題は、タイムスタンプ変数が、以前の変数だけでなく、すべての変数で変更されることです。かわった。最後に編集されたときからの以前のタイムスタンプを印刷するプログラムが必要です。編集された場合は、テキストフィールドの横に現在の時刻を表示します。ご理解いただければ幸いです-__-

4

1 に答える 1

2

この方法で問題を解決することはできません。Asp.net MVCはステートレスです。つまり、コントローラーのインスタンスはリクエストごとに作成されます。これは、oldTitleとoldStatusがnullであるため、タイムスタンプを設定するために実行したチェックが常に真の値であることを意味します。

于 2012-09-07T11:27:56.087 に答える