ASP.NET MVC 實務精要|第四章 串接關聯式資料庫 - SQL Server
首先建立支援資料新增功能的網頁,開啟 Controllers/HomeController.cs 控制器檔案,於其中新增動作方法如下:
新增此動作方法對應的檢視檔案 Create.cshtml於Views/Home 資料夾中,並且建立以下的內容:
其中逐一建立Product類別屬性的對應輸入欄位,最後配置一個submit 型態的輸入按鈕,負責將使用者輸入的資料欄位內容回傳至控制器。
ID 欄位值會自動建立,因此這裏不需要配置。
另外一個建立日期屬性 CreatedOn ,這個屬性資料於新建資料時自動取得系統時間,因此直接忽略即可。
現在回到HomeController,於其中新增另外一個 Create 動作方法:
第一行標示屬性為 [HttpPost] ,表示此動作方法接收表單的POST資料,與前述負責回傳 Create.cshtml 檢視的方法作區隔。
小括弧中參數 product 為使用者按下 Submit 按鈕傳送過來的 Product 物件內容,並且設定其中的 CreateOn 屬性值為今天的日期。
建立 KTStore 物件,引用 Add 將表單傳過來的參數 prodcut加入集合中。
引用SaveChanges() 將其儲存至底層資料庫中,完成一筆資料的新增作業。
最後一行透過 return 引用RedirectToAction() 重新導向Index 動作方法,最後網頁轉向至索引頁,顯示 Index.cshtml 網頁內容。
瀏覽Create.cshtml 檢視,並且於其中輸入欲新增的商品資料,確認無誤之後,按一下「新增」按鈕,資料被新增至資料庫中的Products資料表。

開啟資料表內容,可以看到新增的第二筆資料已經儲存在資料表中。

public ActionResult Create()
{
return View();
}
新增此動作方法對應的檢視檔案 Create.cshtml於Views/Home 資料夾中,並且建立以下的內容:
@model DBModelDemo.Models.Product
@{
ViewBag.Title = "Create";
}
<h2>建立商品資料</h2>
<div>
@using (Html.BeginForm())
{
<div>
<span>品名 </span>@Html.TextBoxFor(m => m.Name)
</div>
<div>
<span>價格 </span>@Html.TextBoxFor(m => m.Price)
</div>
<div>
<span>說明 </span>@Html.TextBoxFor(m => m.Description)
</div>
<p>
<input type="submit" value="新增" />
</p>
}
</div>
其中逐一建立Product類別屬性的對應輸入欄位,最後配置一個submit 型態的輸入按鈕,負責將使用者輸入的資料欄位內容回傳至控制器。
ID 欄位值會自動建立,因此這裏不需要配置。
另外一個建立日期屬性 CreatedOn ,這個屬性資料於新建資料時自動取得系統時間,因此直接忽略即可。
現在回到HomeController,於其中新增另外一個 Create 動作方法:
[HttpPost]
public ActionResult Create(Product product)
{
product.CreatedOn = DateTime.Today;
KTStore db = new KTStore();
db.Product.Add(product);
db.SaveChanges();
return RedirectToAction("Index");
}
第一行標示屬性為 [HttpPost] ,表示此動作方法接收表單的POST資料,與前述負責回傳 Create.cshtml 檢視的方法作區隔。
小括弧中參數 product 為使用者按下 Submit 按鈕傳送過來的 Product 物件內容,並且設定其中的 CreateOn 屬性值為今天的日期。
建立 KTStore 物件,引用 Add 將表單傳過來的參數 prodcut加入集合中。
引用SaveChanges() 將其儲存至底層資料庫中,完成一筆資料的新增作業。
最後一行透過 return 引用RedirectToAction() 重新導向Index 動作方法,最後網頁轉向至索引頁,顯示 Index.cshtml 網頁內容。
瀏覽Create.cshtml 檢視,並且於其中輸入欲新增的商品資料,確認無誤之後,按一下「新增」按鈕,資料被新增至資料庫中的Products資料表。
開啟資料表內容,可以看到新增的第二筆資料已經儲存在資料表中。
沒有留言:
張貼留言