4.3 資料維護 - 新增

ASP.NET MVC 實務精要|第四章 串接關聯式資料庫 - SQL Server

首先建立支援資料新增功能的網頁,開啟 Controllers/HomeController.cs 控制器檔案,於其中新增動作方法如下:

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資料表。



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



沒有留言: