《Pro ASP.NET MVC 3 Framework》学习笔记之二十三【Controllers和Actions】
2012-03-09 00:42
579 查看
生成输出(Producing Output)
在controller完成处理请求之后,通常需要生成一个响应。当我们通过直接实现IController接口创建一个简单的controller时,我们需要对处理请求的每一个方面负责,包括创建对客户端的响应。如果我们想发送一个HTML响应,那我们必须创建并且集合HTML数据,然后使用Response.Write方法将数据发送到客户端。类似地,如果我们想重定向用户到其他的URL,可以使用Response.Redirect方法。
下面是具体的实例:
View Code
ps:我们能看到需要对object对象进行类型转换,现在有了ViewBag以后,推荐使用ViewBag,但是尽量使用强类型view和view models是非常明智的。
执行重定向(Performing Redirections)
一个来自action方法常见的结果不是直接生成任何输出,而是重定向用户到其他的URL。大多数时候,这个重定向的URL是应用程序里面另外一个action方法,用来生成我们想给用户看到的输出。
POST/REDIRECT/GET模式:最频繁使用的重定向是在处理POST请求的action方法里面,正如我们前面提到的,POST请求是要改变应用程序状态的,如果我们处理一个请求后接着仅仅是返回HTML,我们就冒了用户第二次点击重载按钮和重提交按钮所导致的不可预期的异常的风险。为了避免这个问题,我们可以遵循POST/Redirect/GET模式。在这个模式中,接收一个请求,处理它并重定向到浏览器以至于浏览器为其他的URL制造一个GET请求。GET请求不应该修改我们应用程序的状态,所以任何无意的关于请求的重提交不会引起任何问题。
当我们执行一个重定向,我们就发送了两个HTTP编码中的一个到浏览器:
①发送HTTP 302状态编码,代表暂时重定向。这是最频繁使用的重定向类型,MVC3里面也是这样,当我们遵循Post/Redirect/Get模式时,这时发送的代码就是我们想要的。
②发生HTTP 301状态编码,表示永久重定向。这要慎重使用,因为它指示HTTP编码的接收者不会再次请求原始的URL并使用包含了重定向编码的新URL。如果你有疑虑,那么最好使用暂时重定向,发送302编码。
不早了,今天的笔记就到这里!笔记里面不对的地方还请路过的朋友指正,谢谢!
晚安
在controller完成处理请求之后,通常需要生成一个响应。当我们通过直接实现IController接口创建一个简单的controller时,我们需要对处理请求的每一个方面负责,包括创建对客户端的响应。如果我们想发送一个HTML响应,那我们必须创建并且集合HTML数据,然后使用Response.Write方法将数据发送到客户端。类似地,如果我们想重定向用户到其他的URL,可以使用Response.Redirect方法。
下面是具体的实例:
View Code
//Controller部分 public ViewResult Index() { ViewData["Message"] = "Hello"; ViewData["Date"] = DateTime.Now; return View(); } //View部分 @{ ViewBag.Title = "Index"; } <h2>Index</h2> The day is: @(((DateTime)ViewData["Date"]).DayOfWeek) <p /> The message is: @ViewData["Message"]
ps:我们能看到需要对object对象进行类型转换,现在有了ViewBag以后,推荐使用ViewBag,但是尽量使用强类型view和view models是非常明智的。
执行重定向(Performing Redirections)
一个来自action方法常见的结果不是直接生成任何输出,而是重定向用户到其他的URL。大多数时候,这个重定向的URL是应用程序里面另外一个action方法,用来生成我们想给用户看到的输出。
POST/REDIRECT/GET模式:最频繁使用的重定向是在处理POST请求的action方法里面,正如我们前面提到的,POST请求是要改变应用程序状态的,如果我们处理一个请求后接着仅仅是返回HTML,我们就冒了用户第二次点击重载按钮和重提交按钮所导致的不可预期的异常的风险。为了避免这个问题,我们可以遵循POST/Redirect/GET模式。在这个模式中,接收一个请求,处理它并重定向到浏览器以至于浏览器为其他的URL制造一个GET请求。GET请求不应该修改我们应用程序的状态,所以任何无意的关于请求的重提交不会引起任何问题。
当我们执行一个重定向,我们就发送了两个HTTP编码中的一个到浏览器:
①发送HTTP 302状态编码,代表暂时重定向。这是最频繁使用的重定向类型,MVC3里面也是这样,当我们遵循Post/Redirect/Get模式时,这时发送的代码就是我们想要的。
②发生HTTP 301状态编码,表示永久重定向。这要慎重使用,因为它指示HTTP编码的接收者不会再次请求原始的URL并使用包含了重定向编码的新URL。如果你有疑虑,那么最好使用暂时重定向,发送302编码。
不早了,今天的笔记就到这里!笔记里面不对的地方还请路过的朋友指正,谢谢!
晚安
相关文章推荐
- 《Pro ASP.NET MVC 3 Framework》学习笔记之二十四【Controllers和Actions】
- 《Pro ASP.NET MVC 3 Framework》学习笔记之二十二【Controllers和Actions】
- 《Pro ASP.NET MVC 3 Framework》学习笔记目录
- 《Pro ASP.NET MVC 3 Framework》译文目录
- 电子书下载:Pro ASP.NET MVC 3 Framework 3rd Edition
- 《Pro ASP.NET MVC Framework》翻译——第一章
- [译]Pro ASP.NET MVC 3 Framework 3rd Edition (Chapter 20 JQuery) 1. Creating the Project 创建项目
- ASP.NET MVC Framework: Passing ViewData from Controllers to Views
- 《Pro ASP.NET MVC 3 Framework》部署
- 好书推荐《Pro ASP.NET MVC 3 Framework 3rd Edition》
- 【Pro ASP.NET MVC 3 Framework】.学习笔记.9.SportsStore:Securing the Administration Features
- 《Pro ASP.NET MVC 3 Framework》学习笔记之十五【示例项目SportsStore】
- 【Pro ASP.NET MVC 3 Framework】.学习笔记.12.ASP.NET MVC3的细节:URLs,Routing和Areas
- [译]Pro ASP.NET MVC 3 Framework 3rd Edition (Chapter 20 JQuery) 1. Creating the Project 创建项目
- [译]Pro ASP.NET MVC 3 Framework 3rd Edition (Chapter 20 JQuery) 2.Referencing jQuery 引用jQuery
- 《Pro ASP.NET MVC 3 Framework》学习笔记之十九【URL和Routing】
- ASP.NET MVC 5 Controllers and Actions
- Pro ASP.NET MVC 3 Framework 读书笔记之数据校验
- 《Pro ASP.NET MVC 3 Framework》学习笔记之十【Unit Testing的使用】
- [译]Pro ASP.NET MVC 3 Framework 3rd Edition (Chapter 20 JQuery) 3.Writing jQuery Code 编写jQuery代码