前言

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. js操作serviceWorker缓存静态文件

    js操作serviceWorker缓存静态文件 serviceWorker的作用就是用来做离线应用的,在手机端程序中用的较多 先看下效果 index.html <!DOCTYPE html> ...

  2. leetcode893

    class Solution { public: int numSpecialEquivGroups(vector<string>& A) { set<string> ...

  3. ubuntu下编译ffmpeg并用eclipse调试

    一.下载ffnpeg源码 下载地址:http://ffmpeg.org/download.html 二.解决版本问题 可能之前你编译过ffmpeg,或者装过相关的库,那都要先卸载掉,否则用的时候会报一 ...

  4. 成都国嵌-嵌入式linux必修实验手册…

    emouse收集整理,转载请注明: emouse的技术专栏 博客园:http://www.cnblogs.com/emouse/ CSDN:http://blog.csdn.net/haozi_198 ...

  5. 201671010140. 2016-2017-2 《Java程序设计》java学习第二周

                                 学习第二周(Java基本程序设计结构)      这一周,着重学习了Java的简单程序设计实现及运行,通过自己操作,发现Java的程序语法大面 ...

  6. Tags and Layers

    [Tags and Layers] 1.tags and layers 配置面板."Edit" -> "Project Settings" -> & ...

  7. EHR 1.172无法启动数据库,提示磁盘空间不足 设置非归模式

    数据库无法访问,提示ORA-09817错误: 1.查看磁盘空间df -h,使用率100%,看出dbs夹占184G    在oracle的OEM管理器中有可视化的日志展现出,当我们手工清除archive ...

  8. c++策略模式(Strategy Method)

    别人的博客再讲策略模式时都会讲三国,策略类就是赵云的锦囊,锦囊里装着若干妙计.在打仗时想要用什么妙计,直接从锦囊里去取. 锦囊类: class context { public: context(IS ...

  9. 2-javascript::笔记

    0.位置: HTML 中的脚本必须位于 <script> 与 </script> 标签之间. 脚本可被放置在 HTML 页面的 <body> 和 <head& ...

  10. ROS编译:catkin简析

    博客转载自:https://blog.csdn.net/zyh821351004/article/details/50388429 Catkin tutorials: http://wiki.ros. ...