MVC进阶篇(四)——[HttpGet]和[HttpPost]
前言
Get和post,一个获取请求,一个提交请求,在MVC里面用法也很特别,总结一下,我理解的不是特别深刻,希望多多交流。
内容
需求:
用户想要通过点击修改按钮来达到修改这部分内容的效果。
分析:
点击修改按钮,获取这个请求,然后显示相应的修改内容。
Demo
View部分
@*跳转链接,a.UserID为请求条件*@
<a href="/Home/Modify/@a.UserID">修改</a>
Controller部分
[HttpGet]
public ActionResult Modify(string id)
{
//1.根据id查询数据集,返回的集合汇总,拿到第一个实体对象
T_User userd = (from a in db.T_User where a.UserID == id select a).FirstOrDefault();
//2.生成用户级别
IEnumerable<SelectListItem> listitem = (from c in db.T_User
where c.Computer == "ZLT"
select c).ToList()
.Select(c => new SelectListItem { Value = c.UserID.ToString(), Text = c.Level }).ToList();
//将生成的文章分类,下拉框选项集合,设置给viewbag
ViewBag.level = listitem;
//2.将userd传递给显示
//*“加载”视图使用view的构造函数,将数据传递给实体上的名为Model的属性
return View(userd);
}
Model部分
这部分采用的是EF映射过来的数据表,进行部分数据操作,里就不详细解说了。
[HttpPost]
需求:
用户想将上面修改的内容,进行提交,然后保存。
分析:
点击提交按钮,然后提交请求,完成提交。
Demo
View部分
@using (Html.BeginForm("Modify", "Home", FormMethod.Post))
{
<table id="tblist">
<tr>
<td colspan="2">修改</td>
</tr>
<tr>
<td>标题:</td>
@*<td>@Html.TextBox("txtName",(object)Model.T_User)</td>*@
<!--使用htmlhelper的强类型方法直接从model中根据userID属性生成文本框-->
<td>@Html.TextBoxFor(a => a.UserID)</td>
</tr>
<tr>
<td>级别:</td>
<!--使用强类型方法生成下拉框,并自动根据model属性里面的level值,设置下拉框的默认选项-->
<td>@Html.DropDownListFor(a=>a.Level,ViewBag.level as IEnumerable<SelectListItem>)</td>
</tr>
<tr>
<td>内容</td>
@*<td>@Html.TextBox("txtName",(object)Model.UserID)</td>*@
<!--使用htmlhelper的强类型方法直接从model中根据userName属性生成文本框-->
<td>@Html.TextAreaFor(a=>a.UserName,10,60,null)</td>
</tr>
<tr>
<td colspan="2"><input type="submit" value="确定修改" />@Html.ActionLink("返回","Index","Home")</td>
</tr>
</table>
}
Controller部分
[HttpPost]
public ActionResult Modify(T_User model)
{
try
{
//1.将实体对象加入EF对象容器中,并获取伪包装类
DbEntityEntry<T_User> entry = db.Entry<T_User>(model);
//2.将包装类对象的状态设置为unchanged
entry.State = System.Data.EntityState.Unchanged;
//3.设置被改变的属性
entry.Property(a => a.UserID).IsModified = true;
entry.Property(a => a.UserName).IsModified = true;
entry.Property(a => a.Level).IsModified = true;
//4.提交到数据库,完成修改
db.SaveChanges();
//5.更新成功,则命令浏览器重定向到/Home/List方法
return RedirectToAction("Index", "Home");
}
catch (Exception ex)
{ return Content("更新失败!" + ex.Message);
}
}
Model部分
同样采用EF映射过来的数据表,略。
注意:可以发现,当post和get方式不同的时候,在同一个控制器下面,可以有相同的action名。
效果图
小结
Post方法提交的一定是整个表单,一个实体数据,得到提交的结果。Get方法,获取请求条件,然后得到要请求的部分。
感谢您的宝贵时间···
MVC进阶篇(四)——[HttpGet]和[HttpPost]的更多相关文章
- Asp.Net MVC 进阶篇:路由匹配 实现博客路径 和文章路径
Asp.Net MVC 进阶篇:路由匹配 实现博客路径 和文章路径 我们要实现 通过路由 匹配出 博客地址 和博客文章地址 例如下面的这两个地址 //http://www.cnblogs.com/ma ...
- MVC进阶篇(一)——概览
前言 说到MVC,就得先说说框架是什么东西,MVC好多人都知道,是Model.view.controller,但是MVC到底是什么样的一个框架呢,好多人又说了是约定大于配置.下面我来说说我的理解. 内 ...
- .net mvc 一个Action的 HttpGet 和 HttpPost
http://www.cnblogs.com/freeliver54/p/3747836.html 本文转自:http://stackoverflow.com/questions/11767911/m ...
- MVC进阶篇(三)——model层数据验证
前言 常常在想,姓名性别那些个验证,真的有必要每次遇到,每次写验证吗?好麻烦,于是学到MVC这里,发现MVC自带数据验证,这个东西着实是个好东西.我写了一个小demo,分享给大家. 内容 一个表单的提 ...
- MVC进阶篇(二)—路由机制
前言 这个东西好像,一般也不经常动,都用默认的即可.由于MVC模式在framework里面的解析机制,区别与webform模式,是采用解析路由机制的url.从来实例化视图列对象,然后对该action进 ...
- java基础进阶篇(四)_HashMap------【java源码栈】
目录 一.前言 二.特点和常见问题 二.接口定义 三.初始化构造函数 四.HashMap内部结构 五.HashMap的存储分析 六.HashMap的读取分析 七.常用方法 八.HashMap 的jav ...
- Python进阶篇四:Python文件和流
摘要: Python对于文件和流的操作与其他编程语言基本差不多,甚至语句上比其他语言更为简洁.文件和流函数针对的对象除了这两者之外还有,类文件(file-like),即python中只支持读却不支持写 ...
- k8s核心资源之namespace与pod污点容忍度生命周期进阶篇(四)
目录 1.命名空间namespace 1.1 什么是命名空间? 1.2 namespace应用场景 1.3 namespacs常用指令 1.4 namespace资源限额 2.标签 2.1 什么是标签 ...
- Taurus.MVC WebAPI 入门开发教程5:控制器安全校验属性【HttpGet、HttpPost】【Ack】【Token】【MicroService】。
系列目录 1.Taurus.MVC WebAPI 入门开发教程1:框架下载环境配置与运行. 2.Taurus.MVC WebAPI 入门开发教程2:添加控制器输出Hello World. 3.Tau ...
随机推荐
- AJAX流程 代码
var xml = window.XMLHttpRequest ?new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHT ...
- Oracle行转列LISTAGG函数
工作过程中需要将查询的数据分组并显示在一行.以往的工作经验,在sql server中可以用for xml path来实现. 现提供Oracle数据库的行转列方式 oracle11g官方文档简介如下: ...
- 【转】VS 安全开发生命周期(SDL)检查
前面在学习使用google的protobuf时在VS2012中一直无法编译编译通过,经过查找一些资料原来发现,并不是protobuf的问题,而是自己在使用VS2012时,没有完全了解VS2012的强大 ...
- 【总结整理】KANO 模型
c 基本(必备)型需求——Must-beQuality/ Basic Quality. 期望(意愿)型需求——One-dimensional Quality/ Performance Quality. ...
- Lambda02 函数式接口
1 java8默认提供的函数式接口 1.1 Predicate /* * Copyright (c) 2010, 2013, Oracle and/or its affiliates. All rig ...
- Oracle——分组函数
AVG(平均值)和 SUM (合计)函数 可以对数值型数据使用AVG 和 SUM 函数. AVG组函数忽略空值 --在组函数中使用NVL函数 --求平均值 )) MIN(最小值)和 MAX(最大值)函 ...
- 认识Session
Session在不同环境下的不同含义 session,中文经常翻译为会话,其本来的含义是指有始有终的一系列动作/消息,比如打电话是从拿起电话拨号到挂断电话这中间的一系列过程可以称之为一个session ...
- wireshark抓取qq数据包
抓包接口设置成本地连接 点击start,登录qq,输入oicq进行过滤qq包 找到第一个OICQ,点击后,点击oicq-IM software 可以看到自己登录的QQ号码为765343409 本机IP ...
- ASP.NET Web Pages (Razor) FAQ
ASP.NET Web Pages (Razor) FAQ By Tom FitzMacken|February 7, 2014 Print This article lists some fre ...
- Java WEB中的HttpServletResponse数据传递
1.什么是HttpServletResponse 2.使用HttpServletResponse向浏览器发送数据及相关实例. 实例1:实现文件下载功能 实例2:实现验证码注册 实例3:实现页面3秒后跳 ...