前言

Get和post,一个获取请求,一个提交请求,在MVC里面用法也很特别,总结一下,我理解的不是特别深刻,希望多多交流。

内容

[HttpGet]

需求:

用户想要通过点击修改按钮来达到修改这部分内容的效果。

分析:

点击修改按钮,获取这个请求,然后显示相应的修改内容。

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]的更多相关文章

  1. Asp.Net MVC 进阶篇:路由匹配 实现博客路径 和文章路径

    Asp.Net MVC 进阶篇:路由匹配 实现博客路径 和文章路径 我们要实现 通过路由 匹配出 博客地址 和博客文章地址 例如下面的这两个地址 //http://www.cnblogs.com/ma ...

  2. MVC进阶篇(一)——概览

    前言 说到MVC,就得先说说框架是什么东西,MVC好多人都知道,是Model.view.controller,但是MVC到底是什么样的一个框架呢,好多人又说了是约定大于配置.下面我来说说我的理解. 内 ...

  3. .net mvc 一个Action的 HttpGet 和 HttpPost

    http://www.cnblogs.com/freeliver54/p/3747836.html 本文转自:http://stackoverflow.com/questions/11767911/m ...

  4. MVC进阶篇(三)——model层数据验证

    前言 常常在想,姓名性别那些个验证,真的有必要每次遇到,每次写验证吗?好麻烦,于是学到MVC这里,发现MVC自带数据验证,这个东西着实是个好东西.我写了一个小demo,分享给大家. 内容 一个表单的提 ...

  5. MVC进阶篇(二)—路由机制

    前言 这个东西好像,一般也不经常动,都用默认的即可.由于MVC模式在framework里面的解析机制,区别与webform模式,是采用解析路由机制的url.从来实例化视图列对象,然后对该action进 ...

  6. java基础进阶篇(四)_HashMap------【java源码栈】

    目录 一.前言 二.特点和常见问题 二.接口定义 三.初始化构造函数 四.HashMap内部结构 五.HashMap的存储分析 六.HashMap的读取分析 七.常用方法 八.HashMap 的jav ...

  7. Python进阶篇四:Python文件和流

    摘要: Python对于文件和流的操作与其他编程语言基本差不多,甚至语句上比其他语言更为简洁.文件和流函数针对的对象除了这两者之外还有,类文件(file-like),即python中只支持读却不支持写 ...

  8. k8s核心资源之namespace与pod污点容忍度生命周期进阶篇(四)

    目录 1.命名空间namespace 1.1 什么是命名空间? 1.2 namespace应用场景 1.3 namespacs常用指令 1.4 namespace资源限额 2.标签 2.1 什么是标签 ...

  9. Taurus.MVC WebAPI 入门开发教程5:控制器安全校验属性【HttpGet、HttpPost】【Ack】【Token】【MicroService】。

    系列目录 1.Taurus.MVC WebAPI  入门开发教程1:框架下载环境配置与运行. 2.Taurus.MVC WebAPI 入门开发教程2:添加控制器输出Hello World. 3.Tau ...

随机推荐

  1. Unity3D Demo

    之前在Unity讨论Q群里总是有不少同学求项目资源和源码神马的,其实这种资源在官网很多,而且都比较规范和专业,很有参考价值,链接:https://www.assetstore.unity3d.com/ ...

  2. 三级联动第二种方法 三级联动.html

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  3. 微信小程序API登录凭证(code),获得的用户登录态拥有一定的时效性

    调用接口获取登录凭证(code)进而换取用户登录态信息,包括用户的唯一标识(openid) 及本次登录的 会话密钥(session_key).用户数据的加解密通讯需要依赖会话密钥完成. OBJECT参 ...

  4. HTML5 使用sessionStorage实现页面返回刷新

    需求:在某个列表页面跳转到增加新项目页面后需要返回到前一个页面 并且数据最新数据.刚开始是做法是 history.back();方法 返回后页面不会自动刷新的.在新的页面重新访问之前页面的链接可以访问 ...

  5. 通过DG_BROKE搭建Oracle11g_adg

    1.环境 db_primary db_stanby db版本 11.2.0.4.0 11.2.0.4.0 os版本 centos 6.4 centos 6.4 db_unique_name newte ...

  6. mysql 存储过程动态执行sql语句

    之前经常在程序中拼接sql语句,其实我们也可以在存储过程中拼接sql 语句,动态的执行~~ 代码如下: DROP PROCEDURE IF EXISTS SearchByDoctor;CREATE P ...

  7. 浅谈oracle事务

    所谓事务,他是一个操作序列,这些操作要么都执行,要么都不执行,是一个不可分割的工作单元.通俗解释就是事务是把很多事情当成一件事情来完成,也就是大家都在一条船上,要死一起死,要活一起活. 为什么要引入事 ...

  8. java通过反射了解集合泛型的本质

  9. Collision Detection

    [Collision Detection] Collision Detection是Rigidbody中的一个属性.所以显然Collision Detection指定的类型只在Rigidbody之间才 ...

  10. mysql外键约束总结

    总结三种MySQL外键约束方式 如果表A的主关键字是表B中的字段,则该字段称为表B的外键,表A称为主表,表B称为从表.外键是用来实现参照完整性的,不同的外键约束方式将可以使两张表紧密的结合起来,特别是 ...