HttpGet  HttpPost  HttpDelete  HttpPut  HeepHead HttpOptions HttpPatch属性都是动作方法选定器的一份子,比如若在action上套用HttpGet属性,就代表只有当客户端浏览器发送HTTP Get 请求时,ActionInvoker才会选定这个action.

eg:
[HttpPost]
public ActionResult Index(){
 
return view();
}
 
如果action上没有套用这些动作限定属性的话,不管客户端浏览器发送任意HTTP动词都会自动选定到对应的Action,一般用在需要接收窗体信息的时候,你可以创建两个同名的Action,一个套用HTTPGET属性,以显示窗体HTML 另一个套用HttpPost 以接收窗体输出的值
eg:
[HttpGet]
public ActionResult Create()
{
return View();
}
 
[HttpPost]
public ActionResult Create(FormCollection c)
{
Updatesth();
return RedirectToAction("Index");
}
 
 
ActionResult解说
ActionResult是Action运行后的回传型别,但是当Action回传ActionResult的时候,其实并不包含这个ActionResult的运行结果,而是包含运行这个ActionResult时所需的数据,当MvcHandler从控制器取得这个ActionResult之后才会去运行处ActionResult的结果。
下面是ASP.NET MVC内奸的ActionResult衍生类别
1,ViewResult:是mvcz中最常用的ActionResult,用于回传一个标准的检视页面,通过控制器辅助方法能更方便的定义要如何输出view,且可以指定view名称,指定view要套用哪个主版页面Layout Page,指定要传入View的数据模型。
 
在mvc中为了找出一个同名的view页面,尝试搜索了两个不同的路径与四个不同的扩展名,事实上八个不同的路径(想知道这8个路径的话可以随便return一个不存在的检视页面,然后报错就可以看到了)分别由两种不同的检视引擎ViewEngine所支持,前4个由WebFormViewEngine负责查找关联视图页面(*.aspx和*.ascx),后4个由RazorViewEngine负责查找关联视图页面(*.cshtml和*.vbhtml),
 
so mvc在查找检视页面时第一顺序是WebFormViewEngine,不过在mvc3里面,全新的razor语法已经广受mvc开发人员喜欢,如果你想要调整两个ViewEngine的搜索顺序,可以在Global.asax文档的Application_start中添加这个代码,就可变更mvc搜索检视页面的顺序,以缩短mvc在搜索view页面的时间。
ViewEngines.Engines.Clear();
ViewEngines.Engines.Add(new WebFormViewEngine());
ViewEngines.Engines.Add(new RazorViewEngine());
 
 
2,PartialViewResult(PVR):与ViewResult非常类似,但无法为选中的view指派主版页面,如果想在页面中设计更好的关注点分离,可以将网页的其中一部分独立成另一个动作,就可以利用这个来取得页面中的部分属性。
除此之外,当网页前端开发以ajax为主的网页应用时,也经常会利用PVR来取得网页的部分属性。
 
3,EmptyResult:有些action不需要回传任何数据,eg:我们想对网站的在线人数进行统计,可以在网页中动态发出一个http要求给控制器的其中一个Action,当控制器收到后在action里运行加总或记录的动作,之后不回传任何数据,就可以用这个来return。
注: return new EmptyResult();//也可以直接就return ;
 
4,ContentResult可以让你响应任何的文字属性的结果,可以任意指定文字属性 ,属性类型Content-Type与文字编码Encoding
eg:
响应一段XML,设置响应的Content-Type为text/xml,并指定编码。
public ActionResult GetXML()
{
return Content("123</标签root>",“text/xml”,System.Text.Encoding.UTF-8);
}
如果只想单纯的响应一段UTF-8编码的HTML字符串,使用第一个参数传入即可
public ActionResult GetHTML()
{
string strHTML="";//省略html的属性
return Content(strHTML);
}
注:在mvc中有另一种表达,就是直接将回传类型设置为string即可,这是非常简便的撰写方式,mvc会自动判断从Action回传的型别,只要不是ActionResult的衍生型别,就会自动转换成ContentResult来输出。
eg:
public string Content(){
string strHTML="";//省略html的属性
return strHTML;
}

ActionResult,PartialViewResult,EmptyResult,ContentResult的更多相关文章

  1. 一步步学习ASP.NET MVC3 (8)——EmptyResult,ContentResult,RedirectResult

    请注明转载地址:http://www.cnblogs.com/arhat 上一章,我们阐述了Controller,Action和ActionResult所代表的含义及使用,本章继续研究ActionRe ...

  2. MVC - Action和ActionResult

    Action 定义在Controller中的Action方法返回ActionResult对象,ActionResult是对Action执行结果的封装,用于最终对请求进行响应.HTTP是一个单纯的采用请 ...

  3. View的呈现(一)ActionResult

    ActionResult Http是一个单纯采用请求/回复消息交换模式的网络协议,Web服务器在接收并处理来自客户端的请求后悔根据处理结果对请求予以回应.一般来说针对请求的处理最终体现在对目标Acti ...

  4. ASP.NET MVC中多种ActionResult用法总结

    最近一段时间做了个ASP.NET MVC4.0的项目,项目马上就要结束了,今天忙里偷闲简单总结一下心得: 1. 如果Action需要有返回值的话,必须是ActionResult的话,可以返回一个Emp ...

  5. ASP.NET MVC ActionResult的实现

    1.11种ActionResult 在System.Web.Mvc命名空间下: ActionResult是一个抽象类, 在Action中返回的都是其派生类.下面是我整理的ASP.NET MVC 1.0 ...

  6. MVC中的ActionResult

    ActionResult是控制器方法执行后返回的结果类型,控制器方法可以返回一个直接或间接从ActionResult抽象类继承的类型,如果返回的是非ActionResult类型,控制器将会将结果转换为 ...

  7. 掌握 ActionResult

    我在上一篇博客不要停留在表面,MVC 3 我们要深入一些 说明了我们的掌握程度还是不够,还需要我们继续努力.但是有园友质疑说他们认为我说的只是书院派,并不实用,这令作为程序员的我很是生气.好吧,那咱们 ...

  8. MVC3中Action返回类型ActionResult类型

    MVC3中Action返回类型ActionResult在System.Web.Mvc命名空间中.这些包含在控制器中的方法,我们称为控制器中的 Action,比如:HomeController 中的 I ...

  9. MVC ActionResult派生类关系图

    态度决定一切,我要改变的不仅仅是技术,还有对待事情的态度! 先上个图: 由上图可知,ActionResult为根节点,其下有很多子节点!下面简单介绍下: MVC中ActionResult是Action ...

随机推荐

  1. LogBack sl4j 通过MDC实现日志记录区分用户Session[以Spring mvc为例]

    1.首先实现一个interceptor,在请求开始的时候MDC put一个Session标志,interceptor结束的时候remove掉   import javax.servlet.http.H ...

  2. ajax请求原理及jquery $.ajax封装全解析

    .ajax原理: Ajax的原理简单来说通过XmlHttpRequest对象来向服务器发异步请求,从服务器获得数据,然后用javascript来操作DOM而更新页面.这其中最关键的一步就是从服务器获得 ...

  3. 我对java反射机制的理解

    我们平常怎么用一个使用类,怎么使用类的方法?其实就是创建一个对象,并且通过这个对象调用这个方法.不过这有一个问题,就是这个对象的载体就和这个对象产生了耦合,怎么降低两者间的耦合呢?java的反射机制就 ...

  4. 【现代程序设计】homework-04

    题目要求: 第四次作业,构造一个方阵将指定单词填入 stage 1:每个单词只出现1次,且八个方向各至少有两个单词 stage 2:矩阵长宽相等 stage 3:方阵的四个角都要参与单词的构建 算法思 ...

  5. HDU 1166 敌兵布阵 线段树

    敌兵布阵 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submis ...

  6. arcgis android 通过getExtent得到当前地图范围四个点的坐标

    困扰了我很久的问题终于要得到解决了,先欢喜一下.我的目的是想做一个当程序完全退出后,再次打开程序地图直接显示上次程序退出前地图的范围.arcgis for android官方软件就有这个功能.网上搜索 ...

  7. Linux磁盘分区与格式化

    磁盘分区格式说明 linux分区不同于windows linux下分区标示: 例如:hda1 hd这两个字母表示分区所在的设备类型,hd标示IDE类型硬盘,sd表示SCSI类型硬盘 第三字母a标示硬盘 ...

  8. IE6/IE7中display:inline-block解决办法

    IE6/IE7下对display:inline-block的支持性不好. 1.inline元素的display属性设置为inline-block时,所有的浏览器都支持: 2.block元素的displ ...

  9. Redis 连接池的问题

      目录 Redis 连接池的问题    1 1.    前言    1 2.解决方法    1     前言 问题描述:Redis跑了一段时间之后,出现了以下异常. Redis Timeout ex ...

  10. LightOJ1060 nth Permutation(不重复全排列+逆康托展开)

    一年多前遇到差不多的题目http://acm.fafu.edu.cn/problem.php?id=1427. 一开始我还用搜索..后来那时意外找到一个不重复全排列的计算公式:M!/(N1!*N2!* ...