2017-09-22 45 views
0

我正在嘗試一個ASP.Net MVC應用程序,並且正在研究如何通過控制器設置默認值。創建ASP.Net MVC初始值

例如,使用下面的模型:

public class MyItem 
{ 
    public int ID { get; set; } 
    public int ItemTypeID { get; set; } 
    public string Description { get; set; } 
    public DateTime CreateDate { get; set; } 
} 

我已經找到了如何在設定值HttpPost創建功能(如類型,創建日期,其值將不可見或編輯以用戶)。

public class MyItemsController : Controller 
{ 

    ... 

    [HttpPost] 
    [ValidateAntiForgeryToken] 
    public ActionResult Create(
     [Bind(Include = "ID,ItemTypeID,Description,CreateDate")] MyItem myItem) 
    { 
     if (ModelState.IsValid) 
     { 
      // Set values for behind-the-scenes columns. 
      myItem.ItemTypeID = 1; 
      myItem.CreateDate = DateTime.Now; 

      db.MyItems.Add(myItem); 
      db.SaveChanges(); 
      return RedirectToAction("Index"); 
     } 

     return View(myItem); 
    } 

    ... 

} 

但是,這個問題的問題是,它不會執行,直到用戶單擊保存按鈕。有些時候,我希望在保存視圖第一次出現時設置初始值。在這個例子中,也許是我想說明有一個默認值,包括日期:

myItem.Description = string.Format("Item Created on {0:MM/dd/yyyy}", DateTime.Today); 

我想在創建視圖的文本框中默認爲這個值,當用戶第一次進入,但是他們可以鍵入有些不同。

什麼是爲創建視圖設置初始值的最佳方法?

+1

你會在創建表格取得動作設置這些值。你得到的表單是什麼樣的? –

回答

3

與您取得動作只需要修改你的模型:

public ActionResult Create() 
{ 
    var myItem = new myItem(); 

    myItem.Description = string.Format("Item Created on {0:MM/dd/yyyy}", DateTime.Today); 

    return View(myItem); 
} 
+0

我做了這個改變,併爲描述工作。謝謝。 我也將ItemTypeID的賦值移到了Get Create中,但是當我得到Post後,它又被設置爲0。正如我所提到的,用戶不會看到類型,所以我將其文本框從視圖中移除。我需要把它作爲一個隱藏的領域嗎? – Pizzor2000

+0

是的,你可以使用一個隱藏的領域。 – mxmissile

+0

當我將@ Html.HiddenFor(model => model.ItemTypeID,null)添加到我的Create.cshtml文件時,該值確實帶有結果。 – Pizzor2000