前言

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. 【linux】下载命令lftp\sftp\wget

    sftp sftp(安全文件传输协议)与ftp 有着几乎一样的语法和功能.FTP 为 SSH的一部份,是一种传输档案至 Blogger 伺服器的安全方式.它并不使用ftp守护进程(ftpd或wu-ft ...

  2. [机器学习]numpy broadcast shape 机制

    最近在做机器学习的时候,对未知对webshell检测,发现代码提示:ValueError: operands could not be broadcast together with shapes ( ...

  3. JSON数据的解析方法

    1.JSON.parse(json) 2.new Function(“return ” + json) (); 3.eval(“(”+json+”)”)

  4. Arp内网毒化

    攻击者:192.168.220.143 受害者:192.168.220.137 默认网关:192.168.220.2 首先,开启IP转发 使用工具Arpspoof进行ARP毒化,把受害者的流量传送给网 ...

  5. 中国大学MOOC 玩转AutoCAD 熟悉AutoCAD的人机交互方式

  6. std::mutex与pthread mutex区别

    Linux下 pthread mutex * PTHREAD_MUTEX_TIMED_NP,这是缺省值,也就是普通锁.当一个线程加锁以后,其余请求锁的线程将形成一个等待队列,并在解锁后按优先级获得锁. ...

  7. Linux yum失败解决

    Linux yum失败解决 问题: 在CentOS 5.5中需要使用yum安装程序,出现错误: There was a problem importing one of the Python modu ...

  8. django获取字段列表(values/values_list/flat)

    django获取字段列表(values/values_list/flat) values方法可以获取number字段的字典列表 values_list可以获取number的元组列表 values_li ...

  9. float在内存中的存取方法

    今天做了一些题目,想到float数据如何在内存中的形式.不知道一个浮点数是如何存成32位01字符串的.下面是查找的一些资料. 我们先通过java获取这些数的二进制表示. public class De ...

  10. Ajax——三种数据传输格式

    一.HTML HTML由一些普通文本组成.如果服务器通过XMLHTTPRequest发送HTML,文本将存储在responseText属性中. 从服务器端发送的HTML的代码在浏览器端不需要用Java ...