天天看點

ASP.NET MVC3 執行個體(六) 增加、修改和删除操作(一)

上一篇 ASP.NET MVC3 中,大概介紹了下 Razor 中的布局,今天我們看看 ASP.NET MVC3 中的增加、修改和删除操作。我們以一個留言的小例子來說明下,本篇主要内容就是在 ASP.NET MVC3 Razor 布局下實作增、删、改操作以及實體資料的異步驗證。

首先,我們再建立一個表,名字命名為"Contact",打開"AndroidDB.edmx"檔案,右鍵選擇"從資料庫更新模型"。這個前邊已經介紹過,這裡就不多說,這樣在實體層就建立了"Contact"類及它的屬性。接下來,我們新添加一個名為"ContactController"的控制器類,用來顯示我們的留言表單并實作留言功能。我們先看看Controller中的代碼,如下:

public class ContactController : Controller
{
    Android.Models.AndroidEntities android = new AndroidEntities();
    //
    // GET: /Contact/

    public ActionResult Create()
    {
        return View();
    }

    //
    // POST: /Contact/Create
    [HttpPost]
    public ActionResult Create(Contact contact)
    {
        if (ModelState.IsValid)
        {
            android.AddObject("Contact", contact);
            android.SaveChanges();
            return RedirectToAction("../Home");
        }
        else
        {
            return View(contact);
        }
    }
}   
           

上邊這些代碼就是 Controller 中所需的所有代碼了,非常簡潔,是吧?需要說明的2點是:1.[HttpPostAttribute]表明了隻有當表單送出方式為"Post"時,才執行第二個方法,其他情況下執行第一個Create()方法。2.我們使用類 ObjectContext 的方法AddObject()方法進行添加操作,參數分别是屬性名和實體,AddToContact()這種方法現在已經棄用了,這點我們需要注意下。關于使用ObjectSet屬性可以參考下ASP.NET MVC3 執行個體(三) 使用 Controller 進行資料的的查詢。

接下來我們添加 View 模闆,用來展示留言表單,在Create()方法上右鍵單擊,Add View,如下圖:

ASP.NET MVC3 執行個體(六) 增加、修改和删除操作(一)

我們分别選擇了 View data class 為"Contact",模闆為"Create",得到如下的 View:

@model Android.Models.Contact
<body>    
    <script src="@Url.Content("~/Scripts/jquery-1.4.4.min.js")" type="text/javascript"></script>
    <script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
    <script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
    @using (Html.BeginForm()) {
        @Html.ValidationSummary(true)
        <fieldset>
            <legend>Contact</legend>
    
            <div class="editor-label">
                @Html.LabelFor(model => model.UserName)
            </div>
            <div class="editor-field">
                @Html.TextBoxFor(model => model.UserName)
                @Html.ValidationMessageFor(model => model.UserName)
            </div>
    
            <div class="editor-label">
                @Html.LabelFor(model => model.Email)
            </div>
            <div class="editor-field">
                @Html.TextBoxFor(model => model.Email)
                @Html.ValidationMessageFor(model => model.Email)
            </div>
    
            <div class="editor-label">
                @Html.LabelFor(model => model.Website)
            </div>
            <div class="editor-field">
                @Html.TextBoxFor(model => model.Website)
                @Html.ValidationMessageFor(model => model.Website)
            </div>
    
            <div class="editor-label">
                @Html.LabelFor(model => model.Content)
            </div>
            <div class="editor-field">
                @Html.TextAreaFor(model => model.Content,5,60,"Content")
                @Html.ValidationMessageFor(model => model.Content)
            </div>
            <p>
                <input type="submit" value="Create" />
            </p>
        </fieldset>
    }
</body>
           

這種寫法在 ASP.NET MVC 2 裡就已經有了,并沒有太多可說的,它使用強類型的 HtmlHelper 方法輸出相應的 HTML 的标記。看留言内容那裡,可知我們可以定義輸入框的大小和ID(Name),非常友善。到這裡,我們就已經完成了 ASP.NET MVC 3 中的添加操作。當使用者點選"Create"按鈕時,表單中的資料會自動正确的賦給對應的屬性。

我們要時刻記得“使用者的輸入是邪惡的”,這樣我們要對使用者的輸入進行必要的驗證。實體層資料驗證的改進也是 MVC 3 中的一大亮點。@Html.ValidationSummary(true)表明我們已經啟用了用戶端的異步驗證,很明顯這樣可以減少不必要的伺服器請求,MVC3中微軟全面使用 jQuery 進行用戶端的驗證。

ASP.NET MVC3中實體資料的驗證是非常簡單的,業務邏輯分離的非常好,如在驗證留言内容時,隻需添加如下代碼:

[Required(ErrorMessage="不能為空")]
[StringLength(1000, ErrorMessage = "長度在5-1000", MinimumLength = 5)]
public global::System.String Content
{
    get
    {
        return _Content;
    }
    set
    {
        OnContentChanging(value);
        ReportPropertyChanging("Content");
        _Content = StructuralObject.SetValidValue(value, true);
        ReportPropertyChanged("Content");
        OnContentChanged();
    }
}
           

分别驗證了必填和長度兩個屬性,還有很多屬性,我們就不做一一介紹了。最後看下結果,如下:

ASP.NET MVC3 執行個體(六) 增加、修改和删除操作(一)

看來本篇隻能介紹下 ASP.NET MVC3 中的添加操作了,修改和删除操作非常類似,我會補上。發表一篇文章确實很花時間,總是感覺有些地方說的不夠明白,希望大家支援!