ASP.NET MVC3 实例(六) 增加、修改和删除操作(二)
http://www.jquery001.com/asp.net-mvc3-instance-add-update-delete2.html
上篇我们在 ASP.NET MVC3 中实现了添加操作,由于时间关系没有完成修改、删除操作,我们新建了一个名为"Contact"的 Controller,并实现了添加方法,下边就让我们在此基础上来完成 ASP.NET MVC3 中的修改和删除操作。
首先,我们在 Contact 控制器类中添加一个名为 View()的方法,用来从 Contact 表中取出留言数据,并传递给列表页 "Index",方法如下:
//// GET: /Contact/publicActionResultIndex(){var contact =from c in android.Contactwhere c.IsValid==1orderby c.ID descendingselect c;returnView(contact.ToList());}
我们使用 Linq 从 Contact 表中取出了所有有效数据(IsValid==1),并按ID降序显示。接下来,添加名为"Index"的视图,最终 "Index" 全部代码如下:
@modelIList<Android.Models.Contact><p>@Html.ActionLink("Create New","Create")</p><table><tr><th>UserName</th><th>Content</th><th>Addtime</th></tr>@foreach(var item inModel){<tr><td>@item.UserName</td><td>@item.Content</td><td>@item.Addtime</td><td>@Html.ActionLink("编辑","Edit",new{ id=item.ID })|@Html.ActionLink("删除","Delete",new{ id = item.ID })</td></tr>}</table>
可以看到,显示用的代码是非常整洁的,我们没有做样式方面的美化,最终的列表页效果如下:

修改操作、删除操作传递的参数都是留言ID,首先,我们看看修改操作,分别给 "Contact" Controller 添加名为 Edit() 两个方法,1.用来根据根据ID得到留言实体,并返回给编辑页;2.完成修改操作。如下:
//// GET: /Contact/Edit/5publicActionResultEdit(int id){var message = android.Contact.Single(m => m.ID == id);returnView(message);}//// POST: /Contact/Edit/5[HttpPost]publicActionResultEdit(int id,FormCollection collection){try{var message = android.Contact.Single(m => m.ID == id);UpdateModel(message);
android.SaveChanges();returnRedirectToAction("Index");//返回到列表}catch{returnView();}}
为了简洁起见,修改时我们只修改留言是否有效,其他的和这个类似,"Edit"视图最终代码如下:
@modelAndroid.Models.Contact@using(Html.BeginForm()){<fieldset><legend>Contact</legend>@Html.HiddenFor(model => model.ID)<div class="editor-label">@Html.LabelFor(model=>model.Content,"留言内容")</div><div class="editor-field">@Model.Content</div><div class="editor-label">@Html.LabelFor(model => model.IsValid,"是否有效")</div><div class="editor-field">有效@Html.RadioButtonFor(model=>model.IsValid,1)无效@Html.RadioButtonFor(model=>model.IsValid,0)</div><p><input type="submit" value="Save"/></p></fieldset>}
页面的效果如下图所示:

其中RadioButtonFor同LabelFor使用方法类似,这样当我们点击列表页中的"编辑"时,先执行第一个"Edit"方法,根据ID将实体返回到我们的编辑页。当我们点击"Save"提交时,执行第二个"Edit"方法,并对数据库中的"Contact"表进行了修改操作,这样实现了在 ASP.NET MVC3 中的修改操作。
下边看看删除操作,"Contact" 控制器类中的删除方法只使用 Get 方式的就行,因为我们将根据传递过来的ID直接进行删除操作,如下:
//// GET: /Contact/Delete/5publicActionResultDelete(int id){try{var contact = android.Contact.Single(c => c.ID == id);
android.DeleteObject(contact);
android.SaveChanges();}catch{}returnRedirectToAction("../Contact");}
当然了此时的"Delete" 视图完全为空也是可以的。删除操作执行后返回到我们的留言列表中,到这里删除操作就完成了。这里使用真删除是为了说明DeleteObject()方法,一般这种情况我们只需将"IsValid"字段修改为0即可,并不做真删除。还有一点要注意的是,例子中使用try进行异常的处理,因为 Linq 查询时会在有问题时抛出相应的异常、SaveChanges()也会抛出异常。
从这两篇文章我们不难发现,在 ASP.NET MVC3中我们不再需要手动写代码来接收参数了,你可以在添加、修改操作中看到我们并没有手动写代码来接收以"Post"方式提交过来的表单数据。如果你看的 MVC 3中的有些文章还在使用Request["parameter"]、Request.Form["parameter"]、Request.QueryString["parameter"]、collection["parameter"](collection 是 FormCollection 类对象)的方式接收参数,你就需要注意下了。当然,ASP.NET MVC3中还有非常多的特征,本系列还将会进行介绍。
好了,到这里就完全实现了在 ASP.NET MVC3中的增加、修改、删除操作,希望对很多新学 ASP.NET MVC3 的朋友能带来一些帮助。
ASP.NET MVC3 实例(六) 增加、修改和删除操作(二)的更多相关文章
- python操作三大主流数据库(14)python操作redis之新闻项目实战②新闻数据的展示及修改、删除操作
python操作三大主流数据库(14)python操作redis之新闻项目实战②新闻数据的展示及修改.删除操作 项目目录: ├── flask_redis_news.py ├── forms.py ├ ...
- LitePal的修改和删除操作
转载出处:http://blog.csdn.net/guolin_blog/article/details/40083685 传统的修改和删除数据方式 上篇文章中我们已经得知,SQLiteData ...
- Entity Framework 6 Recipes 2nd Edition(10-8)译 - >映射插入、修改、删除操作到存储过程
10-8. 映射插入.修改.删除操作到存储过程 问题 想要映射插入.修改.删除操作到存储过程 解决方案 假设已有运动员实体模型,如Figure 10-8所示. 对应的数据库表如Figure 10-9所 ...
- 如何使用 LINQ 执行插入、修改和删除操作
本实例实现创建 LINQ To SQL 类对数据库进行插入.修改和删除的操作:以下是 具体步骤: 1 )建立 windows 窗体应用项目文件 2 )选择 ' 项目 \ 添加新项 ' 菜单,在 ...
- Thinkphp 数据的修改及删除操作
一.数据修改操作 save() 实现数据修改,返回受影响的记录条数 具体有两种方式实现数据修改,与添加类似(数组.AR方式) 1.数组方式: a) $goods = D(“Goods ...
- 17、手把手教你Extjs5(十七)模块的新增、修改、删除操作
上节在Grid展示时做了一个金额单位可以手工选择的功能,如果你要加入其他功能,也只要按照这个模式来操作就行了,比如说你想改变金额字段的颜色.小数位数.零值是否显示.货币符号.单位显示在标题栏或者跟在金 ...
- SpringData修改和删除操作
SpringData的查询我们已经学完了,我们现在就研究一下SpringData的修改和删除. @Modifying 注解和事务 @Query 与 @Modifying 这两个 annotation一 ...
- C#中XML解析的增加修改和删除
01添加xml节点 private void AddXml(string image, string title) { XmlDocument xmlDoc = n ...
- 【Git】Git 本地的撤销修改和删除操作
一:撤销操作 比如我现在在readme.txt文件里面增加一行 内容为555555555555,我们先通过命令查看如下: 在我未提交之前,我发现添加5555555555555内容有误,所以我得马上恢复 ...
随机推荐
- [bzoj 2097]奶牛健美操
题目描述 对于一棵n个点的树,删除k条边,使得所有联通块直径最大值最小 题解 首先二分联通块直径最大值的最小值. 那么这个能否达成的判定变成了一个类似树形dp的东西 对于一个子树,删除一条边可以删除整 ...
- A*(A星)算法python实现
在春节放假前两天我偶然看到了A\*算法(A\*算法是一个启发式的地图寻路算法),感觉挺有意思.正好放假前也没有什么事情,就花了一个下午写出算法的骨架,节后又花了半天时间完善屏幕输出的细节并且调试完成. ...
- shiro添加注解@RequiresPermissions不起作用
这是因为没有开启spring拦截器,在spring-mvc.xml中加入以下代码就可以了(一定要写在最先加载的xml中,写在后面加载的xml中也不起作用) <bean class="o ...
- ASP.NET 大文件上传的简单处理
在 ASP.NET 开发的过程中,文件上传往往使用自带的 FileUpload 控件,可是用过的人都知道,这个控件的局限性十分大,最大的问题就在于上传大文件时让开发者尤为的头疼,而且,上传时无法方便的 ...
- linux 上传/下载文件到windows工具
一般来说,linux服务器大多是通过ssh客户端来进行远程的登陆和管理的,使用ssh登陆linux主机以后,如何能够快速的和本地机器进行文件的交互呢,也就是上传和下载文件到服务器和本地: 与ssh ...
- HDU 1316 How Many Fibs?(java,简单题,大数)
题目 /** * compareTo:根据该数值是小于.等于.或大于 val 返回 -1.0 或 1: public int compareTo(BigInteger val) 将此 BigInteg ...
- 单元最短路径算法模板汇总(Dijkstra, BF,SPFA),附链式前向星模板
一:dijkstra算法时间复杂度,用优先级队列优化的话,O((M+N)logN)求单源最短路径,要求所有边的权值非负.若图中出现权值为负的边,Dijkstra算法就会失效,求出的最短路径就可能是错的 ...
- AutoCompleteTextView的应用
现在我们上网几乎都会用百度或者谷歌搜索信息,当我们在输入框里输入一两个字后,就会自动提示我们想要的信息,这种效果在Android 里是如何实现的呢? 事实上,Android 的AutoComplete ...
- POJ 3335 Rotating Scoreboard(半平面交求多边形核)
题目链接 题意 : 给你一个多边形,问你在多边形内部是否存在这样的点,使得这个点能够看到任何在多边形边界上的点. 思路 : 半平面交求多边形内核. 半平面交资料 关于求多边形内核的算法 什么是多边形的 ...
- VS2013试用期结束后如何激活
在激活框中输入密钥:BWG7X-J98B3-W34RT-33B3R-JVYW9