MVC神韻---你想在哪解脫!(十二)

追加一條電影信息

運行應用程序,在瀏覽器中輸入「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);

        }

    }

}

下面,咱們將爲咱們的模型添加附加的屬性,看看如何在映射後的數據庫中定製咱們的票價列的精度。

在Movie(電影)模型與數據表中添加字段

咱們如今要對咱們的數據模型類進行修改,同時介紹如何在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>

注意:通常狀況下,數據模型的中途修改並從新編譯,會形成數據丟失,解決辦法很麻煩因此建議先輸入測試數據。

相關文章
相關標籤/搜索