今天看见页面操作中方法重载,里面提到过一点,Action处理的思路是:“从哪来回到哪里去”。
看下面代码截图
1 public ActionResult Delete(int id) 2 { 3 ViewData.Model = dbContext.ClassInfos.Find(id); 4 return View(); 5 } 6 7 [HttpPost] 8 public ActionResult Delete(int id, FormCollection collection) 9 {10 //删除数据11 ClassInfos classInfos=new ClassInfos();12 classInfos.ClassInfoName = string.Empty;13 classInfos.Id = id;14 dbContext.ClassInfos.Attach(classInfos);15 dbContext.Entry(classInfos).State=EntityState.Deleted;16 dbContext.SaveChanges();17 18 return RedirectToAction("Index");19 }
然后对应的view页面
1 <%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage" %> 2 3 4 5 6 7 8 Delete 9 10 11Are you sure you want to delete this?
12 22 <% using (Html.BeginForm()) { %>2324 |25 <%: Html.ActionLink("Back to List", "Index") %>26
27 <% } %>28 29 30
其中主界面如下:即实现删除一行数据的功能,点击Delete,然后跳转对应的方法,实现删除功能。
点击Delete后弹出下面界面
通过审查网页元素和网页源代码对比(左边为源代码,右边为审查元素代码)
有没有发现,虽然左边的<% using(html.BeginForm()){...}%>没有将action写明,但是生成的网页中会自动填充action为 右边图中的 action="/ClassInfo/Delete/0" method="post"
默认情况下,form都已post方式提交请求。
这样就实现了“从哪里来回到哪里去”的思想
解释:点击删除提交的方法(Action)是 Delete(int id) 对应的代码url为:http://localhost:1794/Classinfos/Delete/0
页面跳转到 删除界面,即需要点击删除按钮“delete”时,提交的action同样为Delete方法,不过已Post提交,Controller中实现的方法为Delete(int id,FormCollection collection)方法,
Url为 “/ClassInfos/Delete/0” 。
上面知识个人的一点小见解,功能实现的一点心得,或许没能理解其中的原理,但是对于初学者来说,明白转化过程还是十分重要的。