2012-01-04 30 views
2

保存時自動更新編輯視圖中的日期時間 - 工作正常。我已經用下面的代碼來實現這個...在新記錄中自動設置日期時間

@Html.HiddenFor(model => model.Posted, Model.Posted = DateTime.Now) 

這個問題在於創造新紀錄。我試圖實現自動日期時間條目,但上面的代碼不起作用?

其中正在顯示的錯誤是:

的NullReferenceException是由用戶代碼(對象引用 不設置爲一個對象

下面的代碼是從所述控制器的一個實例未處理的:

// 
    // GET: /cars/Create 

    public ActionResult Create() 
    { 
     return View(); 
    } 

    // POST: /cars/Create 



    [HttpPost] 
    [ValidateInput(false)] 

    public ActionResult Create(cars newsitem) 
    { 
     try 
     { 
      using (var db = new carsNewsEntities()) 
      { 
       db.cars.Add(cars); 
       db.SaveChanges(); 
      } 
      return RedirectToAction("Index"); 
     } 
     catch 
     { 
      return View(); 
     } 
    } 
+0

你用什麼來訪問數據? EF? Linq to SQL? – 2012-01-04 15:53:02

+0

您是否需要顯示與模型配合使用的動作方法,以及該模型如何傳遞到數據訪問層。 – Yuck 2012-01-04 15:54:18

+1

它應該是'model.Posted = DateTime.Now'? – msarchet 2012-01-04 15:54:26

回答

0

嘗試通過一個新的對象,以您的觀點:

// 
// GET: /News/Create 

public ActionResult Create() 
{ 
    return View(new NewsItem()); 
} 

雖然我會設定在控制器領域:

// 
// GET: /News/Create 

public ActionResult Create() 
{ 
    var viewModel = new NewsItem { Posted = DateTime.Now }; 
    return View(viewModel); 
} 
+0

上述解決方案工作。 – 2012-01-04 16:43:52

1

而不是承擔知道如何初始化一個新的對象的責任我建議在1)一個靜態的工廠創建方法,您的服務將知道要調用或2)您的模型對象的空構造函數。

public MyModelObject() 
{ 
    Posted = DateTime.Now; 
} 

順便說一句,我認爲你得到空引用異常,因爲你的「發佈」屬性可能不能爲空...如果我的猜測是正確的,你也許能仍然得到你的方式通過工作使得它可以爲空(但你失去了非空執行)...

0

即使上面的解決方案工作,但如果你有不同的列作爲CreatedDate和ModifiedDate然後上述解決方案不起作用。 它更新記錄後設置createdDate爲空。 克服,我在編輯視圖下面試過,它工作。

@Html.HiddenFor(model => model.EntryDateTimeStamp, Model.EntryDateTimeStamp = Model.EntryDateTimeStamp) 
@Html.HiddenFor(model => model.ModifiedDateTime, Model.ModifiedDateTime = DateTime.Now) 

,同樣在創建視圖我做了類似的事情

@Html.HiddenFor(model => model.EntryDateTimeStamp, Model.EntryDateTimeStamp = DateTime.Now) 

和控制像上面提到的答案通過新的對象。

return View(new NewsItem()); 
相關問題