DynamicData for Asp.net Mvc留言本实例 下篇 更新
来源:互联网 发布:windows电脑护眼模式 编辑:程序博客网 时间:2024/06/15 23:40
我并不打算再建一个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赋值
////// 用于显示的页面 /// [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也做一个判断
////// ////// 用于接收数据的页面,仅post访问/// ///
这样我们就有了一个同时兼备修改和添加功能的页面.
示例下载:http://files.cnblogs.com/chsword/DMvc.rar
- DynamicData for Asp.net Mvc留言本实例 下篇 更新
- DynamicData for Asp.net Mvc留言本实例 上篇 准备工作及显示文章列表
- DynamicData for Asp.net Mvc留言本实例 中篇 新建.删除.数据验证
- 拯救ASP---Quickwork For Asp MVC 开发框架-留言本实例及下载
- PHP MVC留言本实例
- PHP MVC留言本实例
- [ASP.net]XML留言本
- 简单的PHP MVC留言本实例
- 用ASP.Net编写留言本
- 用ASP.Net编写留言本
- asp.net留言本(文本格式)
- 用ASP.Net编写留言本
- 最简单的PHP MVC留言本实例
- ASP留言本
- asp小留言本
- asp.net mvc 实例
- Asp.net MVC 实例
- 用flash与asp.net制作涂鸦留言本
- 桥牌入门
- 文件上传实例(文件上传,自动重命名,自动添加文件夹)
- DynamicData for Asp.net Mvc留言本实例 中篇 新建.删除.数据验证
- 登录判断用户名和密码是否正确的代码
- 我的vimrc,简单易用。
- DynamicData for Asp.net Mvc留言本实例 下篇 更新
- DBGrid 写EXCEL 方法一
- 沟通
- 嵌入式系统 BootLoader 技术内幕
- remove () 函数
- VC++中使用内存映射文件处理大文件1
- bit 和sbit的区别
- 匈牙利命名法
- VC++中使用内存映射文件处理大文件(2)