• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

DynamicData for Asp.net Mvc留言本实例 下篇 更新

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

我并不打算再建一个edit页来实现更新,而打算用现有的create页来实现更新功能

虽然也许这样并不符合其语义,但我仍想这么做,因为asp那时候大家都是把增删改查放在一个页面的只用参数来区别

如:

article?m=add

article?m=modfiy

article?m=delete

由于控件的流行,细节被Asp.net隐匿了起来,很多朋友不再通过QueryString或隐藏表单来控制功能,或者未接触过Asp的朋友从来也没有想过这么做,因为GridView等控件提供了增删功能.

但是Asp.net Mvc下我们是否应该重新认识一下这种些基础的东西呢

 

因为一个朋友刚刚问了我一个关于通过QueryString来区分Add/Edit的问题,所以感触挺多,啰嗦几句,大家见谅

 

而我这里为了不破坏前面所讲的结构所以只能将错就错一下,为Create添加一个id的可空参数,如果id为空即为添加,如果有id的值传过来就是编辑

OK开动.

首先在列表中先加一个修改的连接


	<!--显示列表开始-->
	<%foreach (var a in ViewData.Model) { %>
	<fieldset>
		<legend>
			<% Html.RenderDynamicField(a, "Title"); %></legend>
//....
        <%=Html.ActionLink("修改","Create",new{id=a.ID},null) %>
	</fieldset>
	<% } %>

这里我们将id传了过去

在create页我们将view修改一下:


            <form method="post">
                <%
              Html.RenderDynamicEntity("art", ViewData.Model
                                       ,
                                       ViewData.Model == null ? DataBoundControlMode.Insert : DataBoundControlMode.Edit); %>
                <input type="submit" />
            </form>

这样view页就可以自动生成添加或修改的表单,而其判断依据是ViewData.Model是否存在值

我们在Controller中对id进行判断,如果存在则给ViewData.Model赋值


        /// <summary>
        /// 用于显示的页面
        /// </summary>
        [AcceptVerbs(HttpVerbs.Get)]
        public ActionResult Create(long? id)
        {
            if(id.HasValue)
            {
                using (var db = new DMvcDataDataContext())
                {
                    var art=db.Articles.Where(c => c.ID == id.Value).FirstOrDefault();
                    return View(art);
                }
            }
            return View();
        }

同样,我们在它的处理Action也做一个判断


/// <summary>
        /// 用于接收数据的页面,仅post访问
/// </summary>
/// <param name="id"></param>
/// <param name="art"></param>
/// <returns></returns>
        [AcceptVerbs(HttpVerbs.Post)]
        public ActionResult Create(long? id,Articles art) {
            try {
                if (ViewData.ModelState.IsValid) {
                    using (var db = new DMvcDataDataContext()) {
                        if (id.HasValue) {
                            //在存在id时修改数据
                            var a = db.Articles.Where(c => c.ID == id).FirstOrDefault();
                            a.Title = art.Title;
                            a.Body = art.Body;
                            a.Author = art.Author;
                            a.AddTime = art.AddTime;
                        }
                        else {//不存在id时添加数据
                            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();
        }

这样我们就有了一个同时兼备修改和添加功能的页面.

 

示例下载:https://files.cnblogs.com/chsword/DMvc.rar

 

DynamicData for Asp.net Mvc留言本实例 下篇 更新

DynamicData for Asp.net Mvc留言本实例 中篇 新建.删除.数据验证

DynamicData for Asp.net Mvc留言本实例 上篇 准备工作及显示文章列表


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap