運行應用程序,在瀏覽器中輸入「http://localhost:xx/Movies/Create」,在表單中輸入一條電影信息,而後點擊追加按鈕,如圖所示。html
點擊追加按鈕進行提交,表單中輸入的這條電影信息將會保存到數據庫中,保存後瀏覽器中將打開電影清單畫面,而且將這條追加的電影顯示在清單中,如圖所示。數據庫
注意到在這個電影清單畫面中將剛纔追加的電影票價顯示成了10元,而不是用戶輸入的9.99元,這是由於當前該數據表中Decimal類型的默認精度只能識別與處理整數值,而且自動將小數部分四捨五入。關於如何解決這個問題,咱們將在下一節中對模型進行一些調整的時候會同時進行介紹。如今咱們已經有了一個Web應用程序的雛形,咱們能夠在數據庫中追加數據,顯示數據。代碼清單 MoviesController類的完整代碼:瀏覽器
using MvcMovie.Models;app
using System.Linq;測試
using System;spa
using System.Web.Mvc;調試
namespace MvcMovie.Controllersorm
{htm
public class MoviesController : Controllerblog
{
MovieDBContext db = new MovieDBContext();
public ActionResult Index()
{
var movies=from m in db.Movies
where m.ReleaseDate>new DateTime(1984,6,1)
select m;
return View(movies.ToList());
}
public ActionResult Create()
{
return View();
}
[HttpPost]
public ActionResult Create(Movie newMovie)
{
if (ModelState.IsValid)
{
db.Movies.Add(newMovie);
db.SaveChanges();
return RedirectToAction("Index");
}
else
return View(newMovie);
}
}
}
下面,咱們將爲咱們的模型添加附加的屬性,看看如何在映射後的數據庫中定製咱們的票價列的精度。
咱們如今要對咱們的數據模型類進行修改,同時介紹如何在MVC4中根據這些修改來調整咱們數據表的結構。首先,咱們在Movie類中添加一個附加的「Rating」屬性。打開Movie.cs文件,在Movie類中添加一個Rating屬性,以下所示。
public class Movie
{ public int ID { get; set; }
public string Title { get; set; }
public DateTime ReleaseDate { get; set; }
public string Genre { get; set; }
public decimal Price { get; set; }
public string Rating { get; set; }
}
點擊「調試」菜單下的「生成MvcMovie」,從新編譯應用程序。如今咱們已經將咱們的模型進行了更新,讓咱們一樣地修改咱們的Views文件夾下的Movies文件夾下的Index.cshtml文件與Create.cshtml這兩個視圖模板文件,在視圖中添加這個Rating屬性。首先打開Index.cshtml文件,在內容爲「票價」(對應Price屬性)的<th>元素後面追加「<th>電影等級</th>」列標題(對應Rating屬性)。在顯示Price屬性內容的td元素後面追加一個<td>元素,用來顯示Rating屬性的內容。進行了這兩個修改後的Index.cshtml文件中的主要內容以下所示。
<table>
<tr>
<th></th>
<th>電影名稱</th>
<th>發行日期</th>
<th>種類</th>
<th>票價</th>
<th>電影等級</th>
</tr>
@foreach (var item in Model) {
<tr>
<td>@Html.ActionLink("編輯", "Edit", new { id=item.ID }) |@Html.ActionLink("查看明細", "Details", new { id=item.ID }) |@Html.ActionLink("刪除", "Delete", new { id=item.ID })</td>
<td>@item.Title</td>
<td>@String.Format("{0:d}", item.ReleaseDate)</td>
<td>@item.Genre</td>
<td>@String.Format("{0:c2}", item.Price)</td>
<td>@item.Rating</td>
</tr>
}
</table>
接下來打開Create.cshtml文件,在表單底部追加以下所示的標籤。它將顯示爲一個文本框,用來輸入Rating屬性的內容。
<div class="editor-label">電影等級</div>
<div class="editor-field">
@Html.EditorFor(model => model.Rating)
@Html.ValidationMessageFor(model => model.Rating)
</div>
注意:通常狀況下,數據模型的中途修改並從新編譯,會形成數據丟失,解決辦法很麻煩因此建議先輸入測試數據。