DynamicData for Asp.net Mvc留言本執行個體 中篇 建立.刪除.資料驗證

來源:互聯網
上載者:User

上篇咱完成了顯示列表的功能,下面接著來

也許您有疑問,這個顯示列表不是和正常的Asp.net Mvc差不多嗎?也是個foreach只是由原來的<%=欄位%>變成了<% Html.RenderDynamicField(a, "Title"); %>之流,反倒是多寫了字,除了分頁那裡爽一點以外,其它地方沒見著好處.

下面我們就來看看DynamicData for Asp.net Mvc的好處

前提工作

總有前提工作真是累

這回還是在Application_Start()裡加語句,使之成為

protected void Application_Start() {RegisterRoutes(RouteTable.Routes);var model = new MetaModel();model.RegisterContext(typeof(DMvc.Models.DMvcDataDataContext),new ContextConfiguration { ScaffoldAllTables = true });            ModelBinders.DefaultBinder = new DynamicDataModelBinder(ModelBinders.DefaultBinder);//增加複雜參數自動綁定功能}
插入資料

(頁面為article/create):

這表單,就算是一個讀過我的/Lulu的/哪怕是SBPP的Asp.net Mvc的文章的初學者也可以建出來,但您看看它的View,您就知道DynamicData for Asp.net Mvc的強大了.

            <form method="post">                <% Html.RenderDynamicEntity<Articles>("art"); %>                <input type="submit" />            </form>

就是這樣,強吧

這裡我補充一下它的Controller(簡單明了,不多說明了):

       /// <summary>        /// 用於顯示的頁面        /// </summary>        [AcceptVerbs(HttpVerbs.Get)]        public ActionResult Create()        {            return View();        }        /// <summary>        /// 用於接收資料的頁面,僅post訪問        /// </summary>        /// <param name="art"></param>        [AcceptVerbs(HttpVerbs.Post)]        public ActionResult Create(Articles art) {            using (var db = new DMvcDataDataContext())            {                db.Articles.InsertOnSubmit(art);                db.SubmitChanges();//插入資料庫並儲存                return RedirectToAction("List");//跳到列表頁            }        }
資料驗證

大哥大姐再來看看這效果:

就是加一個驗證,看看有多難:

View加了一句:

           <% Html.RenderPartial("ValidationSummary");//加了個這個/不加也可,就是沒有上面的提示了 %>            <form method="post">                <% Html.RenderDynamicEntity<Articles>("art"); %>                <input type="submit" />            </form>

Controller加了個判斷(Get那沒改只改了post):

        /// <summary>        /// 用於接收資料的頁面,僅post訪問        /// </summary>        /// <param name="art"></param>        [AcceptVerbs(HttpVerbs.Post)]        public ActionResult Create(Articles art) {            try {                if (ViewData.ModelState.IsValid) {                    using (var db = new DMvcDataDataContext()) {                        db.Articles.InsertOnSubmit(art);                        db.SubmitChanges();//插入資料庫並儲存                        return RedirectToAction("List");//跳到列表頁                    }                }            }            catch (Exception ex) {                ModelState error = new ModelState();                error.Errors.Add(ex);                ViewData.ModelState.Add("Category", error);            }            return View();        }

 

刪除功能

作為我最喜歡的功能,在一個列表中刪除功能必不可少:

view,我們改動原來的View添加一個刪除按鈕(list中):

<!--顯示列表開始--><%foreach (var a in ViewData.Model) { %><fieldset><legend><% Html.RenderDynamicField(a, "Title"); %></legend>內容:<%Html.RenderDynamicField(a, "Body"); %><br />發表日期:<%Html.RenderDynamicField(a, "Addtime"); %>作者:<%Html.RenderDynamicField(a, "Author"); %><br /><form action="<%=Url.Action("Delete")%>" method="post" name="del<%=a.ID %>"><%= Html.Hidden("returnTo", Request.RawUrl) %><%= Html.Hidden("id", a.ID) %> <input type="submit" value="刪除" />        </form></fieldset><% } %><!--顯示列表結束-->

我們添加一個刪除的action

        /// <summary>        /// 刪除資料        /// </summary>        /// <param name="id"></param>        /// <param name="returnTo"></param>        [AcceptVerbs(HttpVerbs.Post)]        public ActionResult Delete(long id, string returnTo)        {            using (var db = new DMvcDataDataContext())            {                db.Articles.DeleteOnSubmit(                    db.Articles.Where(c => c.ID == id).FirstOrDefault())                    ;                db.SubmitChanges(); //刪除資料庫並儲存                return Redirect(returnTo); //跳到列表頁            }        }

這樣就可以實現刪除功能了

如果運行以上代碼時出錯,請檢查UrlRouting規則是否含id,如果有,請去掉:

routes.MapRoute("Default",                                              // Route name"{controller}/{action}",                           // URL with parametersnew { controller = "Home", action = "Index"}  // Parameter defaults);

 

研究一下,我們會看到,我們只差更新沒有講了,留著下回寫

樣本下載:http://files.cnblogs.com/chsword/DMvc.rar

 

DynamicData for Asp.net Mvc留言本執行個體 下篇 更新

DynamicData for Asp.net Mvc留言本執行個體 中篇 建立.刪除.資料驗證

DynamicData for Asp.net Mvc留言本執行個體 上篇 準備工作及顯示文章列表

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.